AS3 добавить изображение в «расширенный» клип - PullRequest
0 голосов
/ 14 декабря 2011

В AS3 - я использую универсальный обработчик кнопок для обработки событий нажатия на объекте фрагмента ролика.Последние 4 часа я пытался добавить изображение в этот объект мувиклипа (см. * * *).

Код (я немного вырезал и вставил, но все это компилируется без ошибок)

btPlay  =   new mcButtonPlay(this,"ClickMe",GameImage); //  GameImage is an BitmapData object

public class mcButtonPlay extends navigationButtonHandler {
    public function mcButtonPlay(Parent:MovieClip,Text:String,GameImage:BitmapData)  {
        super(Text);
        if (GameImage != null) {                
            var ImageBitMap:Bitmap  = new Bitmap(GameImage);
            this.addChild(ImageBitMap); // * * * This doesn’t show
            Parent.addChild(ImageBitMap);   // Works just to test the image
        }                       
    }
} 

public class navigationButtonHandler extends MovieClip {
    public function navigationButtonHandler(Text:String)  {
        ChangeButtonTargetText(Text);
        Parent.addChild(this);
    }
}

Ответы [ 3 ]

0 голосов
/ 14 декабря 2011
public class navigationButtonHandler extends MovieClip {
    public function navigationButtonHandler(Text:String)  {
        ChangeButtonTargetText(Text);
        Parent.addChild(this); //<--------????
    }
}

откуда взято Parent в приведенном выше фрагменте кода, скопированном с вопроса?Казалось бы, класс navigationButtonHandler никогда не будет добавлен на сцену, потому что он не получает Parent?Поэтому расширенный класс также никогда не добавляется на сцену, поэтому ваше изображение никогда не будет отображаться, если вы добавите его в свой класс mcButtonPlay.
Ваш расширенный конструктор передает параметр Parent, а базовый класс - нет.Это кажется мне странным и не должно компилироваться.Или вы делаете какие-то статичные вещи за кулисами?

И приступайте к работе над стилем прописной буквы, как упоминалось в комментариях.На самом деле намного проще читать и находить ошибки, если вы следуете общепринятым правилам!

0 голосов
/ 16 декабря 2011

Удалось исправить это, поменяв супер и добавив дочернюю логику:

public class mcButtonPlay extends navigationButtonHandler {
    public function mcButtonPlay(Parent:MovieClip,Text:String,GameImage:BitmapData)  {
        if (GameImage != null) {                
            var ImageBitMap:Bitmap  = new Bitmap(GameImage);
            this.addChild(ImageBitMap); // * * * This doesn’t show
            Parent.addChild(ImageBitMap);   // Works just to test the image
        }                       
        super(Text);
    }
}

Не знаю почему, хотя!

0 голосов
/ 14 декабря 2011
        this.addChild(ImageBitMap); // * * * This doesn’t show
        Parent.addChild(ImageBitMap);   // Works just to test the image

С этим кодом ImageBitMap удаляется из 'this' и помещается в 'Parent', поэтому вы никогда не увидите его в 'this'.

Удалите эту вторую строку и скажите мне, все ли еще работает.

Edit:

Вы добавляете btPlay в иерархию сцены или отображения?

например.

btPlay  =   new mcButtonPlay(this,"ClickMe",GameImage); 
this.addChild(btPlay);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...