как да направите видеоклип от живота с помощта на actionscript 2.0

Използвам ActionScript 2.0 за моя проект. Имам филмов клип, който се движи по оста x. Проблемът ми е, че ако този филмов клип достигне дадената граница, той трябва автоматично да приспадне един живот. Моите кодове не работят.

Ето моят код за времевата линия:

var life:Number = 5;
lives = 3;
boundary = 280; 

var speed:Number = 1;
var boundary:Number = 280;


this.onEnterFrame = function():Void {
    if (clip._x > boundary) {
        clip._x -= speed;
    } else {
        clip._x = boundary;
        delete this.onEnterFrame;	
    }
}
if(lives == 0){
	gotoandstop(132);
}

Ето моят код за преместване на mc:

onClipEvent (load) {
    speed = 1;
    boundary = 280; 	
}
onClipEvent (enterFrame) {
    if (this._x > boundary) {
        this._x -= speed;		
    } 
	else {
        this._x = boundary;
        this._visible = false;
		life -= 1;
        lifebox.text = life.toString();
    }
}


person nesty santayo    schedule 19.11.2014    source източник
comment
Но какво се случва, след като вашият филмов клип достигне зададената граница? спира ли Изчезва ли? Подскача ли?   -  person helloflash    schedule 20.11.2014
comment
филмовият клип ще изчезне, когато достигне границата и ще приспадне живот.   -  person nesty santayo    schedule 21.11.2014
comment
И какво се случва след това? Появява ли се друг филмов клип? Ако искате филмовият ви клип да изчезне, трябва да го премахнете или да го поставите на друго място, защото hitTest ще работи непрекъснато.   -  person helloflash    schedule 21.11.2014
comment
да, появява се друг филмов клип. Ааа, значи няма да използвам този код this._visible = false;?   -  person nesty santayo    schedule 21.11.2014


Отговори (2)


Първо, не е необходимо да имате код за времевата линия и код за вашия филмов клип.

От друга страна, ако искате видеоклипът ви да изчезне, трябва да го премахнете или да го поставите на друго място, защото hitTest ще работи непрекъснато.

Код на основната времева линия

var lifes:Number = 5;
var speed:Number = 1;
var boundary:Number = 280;
var startX:Number = 320;
clip._x = startX;

this.onEnterFrame = function():Void {
    if (clip._x > boundary) {
        clip._x -= speed;
    } else {
        lifes--;
        clip._x = startX;
        if (lifes == 0) {
            gotoAndStop(132);
            delete this.onEnterFrame;
        }
    }
}
person helloflash    schedule 21.11.2014
comment
Опитах вашия код, но не работи. Къде точно мога да поставя този код? - person nesty santayo; 01.12.2014
comment
@nesty santayo Този код е за вашата хронология и работи тук. - person helloflash; 01.12.2014

Кодът на основните времеви линии е ок.

Грешката беше в реферирането. Ето коригиран код на MovieClip.

onClipEvent (load) {
    speed = 1;
    boundary = 280; 	
}
onClipEvent (enterFrame) {
    if (this._x > boundary) {
        this._x -= speed;		
    } 
	else {
        this._x = boundary;
        this._visible = false;
// use parent to refer variables and textfields declared, level up (in this case to main timeline);
_parent.life -= 1;
_parent.lifebox.text = _parent.life;
    }
}

person animaacija    schedule 20.11.2014
comment
кодът работи, но когато филмовият клип достигне границата си, той ще изчезне, но животът ще се приспада непрекъснато. - person nesty santayo; 21.11.2014
comment
Вярно е. Животът намалява непрекъснато, тъй като onEnterframe се извиква през цялото време (не знам как да премахна това! ако изобщо е възможно) Предлагам да не поставяте код в инстанции, никога. Много по-малко проблеми за вас ще бъде събирането на целия контрол на вашето приложение от едно място, чрез код. Използвайте код дори за поставяне на екземпляри на екрана и т.н. Ъъъъ, за да спрете животите да се редуцират, просто поставете условно условие: (_parent.life >= 0)?_parent.life -= 1:null; това е кратка форма оператор if, за да поставите intend of line там, където родителският живот е намален (в кода на вашия екземпляр) - person animaacija; 21.11.2014