AS3 Flash - добавление мувиклипа на сцену с неработающим Actionscript - PullRequest
1 голос
/ 25 августа 2011

По какой-то неизвестной мне причине я не могу добавить мувиклип на сцену или в свой класс документов.

Вот что у меня есть:

var testShard:blockshards = new blockshards();
addChild(testShard);

Ничего не происходит, кроме кодадля blockhards выполняется (я вижу это в выводе).

Когда я вручную добавляю его в файл .fla, он работает.

Кто-нибудь знает почему?Когда я заменяю блокшарды другим мувиклипом, он отлично работает.

Вот мои блокбарды. As:

package  {
    import flash.events.Event;
    import flash.display.MovieClip;
    public class blockshards extends MovieClip{
        var framesToDie:uint = 30;
        var xspeed:Number = 0;
        var yspeed:Number = 0;
        public function blockshards() {
            addEventListener(Event.ENTER_FRAME, onEntFrm);
            xspeed = 2 - Math.random() * 4;
            yspeed = -5;
        }
        public function onEntFrm(e:Event){
            framesToDie--;
            if(framesToDie <= 0){
                this.parent.removeChild(this);
                removeEventListener(Event.ENTER_FRAME, onEntFrm);
            }
            alpha -= 0.03;
            x += xspeed;
            y += yspeed;
            yspeed += 0.2;
            xspeed *= 0.98;
        }
    }

}

Ответы [ 4 ]

2 голосов
/ 25 августа 2011

Вы не должны выполнять код непосредственно в конструкторах ваших экранных объектов, всегда лучше сначала поставить проверку для мудреца, в противном случае происходят странные вещи.

public function blockshards() {
     if ( stage ) _init( );
     else addEventListener(Event.ADDED_TO_STAGE, _init );
}

private function _init( e:Event = null ):void {
    removeEventListener( Event.ADDED_TO_STAGE, _init );
    addEventListener(Event.ENTER_FRAME, onEntFrm);
    xspeed = 2 - Math.random() * 4;
    yspeed = -5;
}

То же самое в конструкторе класса вашего документа.

0 голосов
/ 25 августа 2011

Ничего не нарисовано или не прикреплено к вашему видеоклипу. Ваш клип будет там, но показан пустым!

Редактировать: Видимо, это уже известно вам. И я не знаю, Flash :-) Но вот ссылка, которая дает пошаговое описание экспорта мувиклипов для ActionScript:

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b8ea63-7fee.html

0 голосов
/ 25 августа 2011

Я переместил код в другую функцию, и он работал как-то, не меняя ничего общего с блокшардами .. очень странно

0 голосов
/ 25 августа 2011

Надеюсь, вы использовали Свойства связи для создания класса blockshards.

Так что это может быть точка регистрации проблема. Поэтому, пожалуйста, проверьте точку регистрации MovieClip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...