как сделать клип из жизни с помощью 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, чтобы вы могли поместить намерение строки, где родительская жизнь сокращается. (в коде вашего экземпляра) - person animaacija; 21.11.2014