Класс кнопок по имени экземпляра Actionscript-3 - PullRequest
1 голос
/ 20 июля 2010

Я так пользуюсь кодом временной шкалы, что это сбивает меня с толку.Как получить класс кнопки для распознавания экземпляра кнопки на сцене?
Пожалуйста, помогите.

... Только что исправлено
Buttons.fla

Class: 'Buttons'
Button with instance name placed on stage

Buttons.as

package {
    import flash.display.MovieClip;
    public class Buttons extends MovieClip {

         public function Buttons() {
         mc.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
         stage.addChild(this);

         }

         public function onClick(event:MouseEvent):void{
             trace("Hello World");
         }
    }  
}

Ошибка:
1120: неопределенное свойство
Ошибка указывает, что это событие мыши, а не имя моего экземпляра mc.

ССЫЛКА НА ФАЙЛ

Ответы [ 3 ]

2 голосов
/ 20 июля 2010

Вам не хватает фигурной скобки, определения mc и импорта MouseEvent (корень вашей проблемы выше):

package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class Buttons extends MovieClip {

         public function Buttons() {
             //it's better to use "this" here instead of adding another
             //instance of movieclip named "mc"
             this.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
         }

         public function onClick(event:MouseEvent):void{
             trace("Hello World");
         }
    }  
}

Конечно, есть несколько других / лучших способов достижения тех же результатов, но это должно по крайней мере решить вашу проблему компиляции. Теперь, чтобы получить это на сцене, вам нужно добавить это к тому, что существует. Один из простых способов сделать это - поместить следующую строку прямо под this.addEventListener :

stage.addChild(this);

Если у вас есть другие вопросы о том, как заставить это работать, дайте мне знать. Я надеюсь, что это указывает на правильное направление,

- gMale

EDIT:

В ответ на комментарии ниже здесь ссылка на файлы Flash . Я пытался понять, что ты делаешь. В IDE закодирована одна быстрая нажимаемая кнопка, а в отдельном * .AS-файле - одна быстро нажимаемая кнопка:

1 голос
/ 21 июля 2010

для доступа к экземплярам, ​​созданным в IDE, вам нужно вызывать их с помощью синтаксиса [], это работает:

package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    public class Buttons extends MovieClip {

         public function Buttons() {
         this["mc"].addEventListener(MouseEvent.MOUSE_DOWN, onClick);
         //stage.addChild(this); // this is really not useful
         }
         public function onClick(event:MouseEvent):void{
             trace("Hello World");
         }
    }  
}

также обратите внимание, что вам нужно импортировать MouseEvent. :)

Если вам действительно нужен доступ к вашей кнопке через mc, ей нужно больше кода:

package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    public class Buttons extends MovieClip {

         protected var mc:MovieClip;

         public function Buttons() {

            if(this["mc"] is MovieClip){
              mc = this["mc"];
            }else{
              //you probably want to create it if not found on the stage.
            }
         mc.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
         }
         public function onClick(event:MouseEvent):void{
             trace("Hello World");
         }
    }  
}

Надеюсь, это поможет.

1 голос
/ 20 июля 2010

Это может помочь с экземпляром 'mc'

package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    public class Buttons extends MovieClip {
         public function Buttons() {
           //it's better to use "this" here instead of adding another
           //instance of movieclip named "mc"
         this.addEventListener(MouseEvent.MOUSE_DOWN, onClick); 
         }
         public function onClick(event:MouseEvent):void{
           trace("Hello World");
         //PASS IT INTO THE BRACKETS
         stage.addChild(mc);//<--------------------------
         }
    }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...