AS3 [Event (name = "", type = "")], какое значение? - PullRequest
13 голосов
/ 24 марта 2009

Я разрабатываю с помощью FlashDevelop3 R2 и Flex 3.3 SDK, и во многих случаях я должен использовать тег метаданных для вставки следующим образом:

  [Embed(source="path/to/file")]
  private var Asset:Class;

Я хорошо понимаю все вышесказанное, и я благодарен, что оно существует, потому что я не люблю открывать flash IDE слишком часто.

Когда я в последнее время посещаю занятия других авторов, я обнаружил интересный тег метаданных, который мне не понятен:

[Event(name="", type="")]

Мне еще предстоит увидеть ситуацию, когда мне это нужно, и, кроме того, я действительно просто не понимаю, для чего это.

Заранее благодарен за помощь.

Брайан Ходж
blog.hodgedev.com hodgedev.com

Ответы [ 2 ]

20 голосов
/ 09 мая 2009

Эти [Event(name, type)] объявления описывают, какие события может отправлять экземпляр класса.

Они действительно полезны для дополнения кода - например, когда вы набираете: mySprite.addEventListener(, ваш редактор кода (Flex Builder или FlashDevelop) отобразит значимый список событий, которые этот объект может отправить.

Таким образом, вы можете добавить эти объявления в свой код и воспользоваться более богатым дополнением кода.

Также обратите внимание, что это работает с пользовательскими классами событий (см. Новый шаблон класса событий FlashDevelop).

package mycomp {
    import flash.events.Event;

    public class MyEvent extends Event {
         public const SOME_EVENT:String = "someEvent";
         // required Event type declarations
    }
}

package mycomp {
     [Event(name="someEvent", type="mycomp.MyEvent")]
     public class MyComp extends Sprite {
     }
}

package myproject {
     import mycomp.MyComp;

     public class MyProject {
          function MyProject() {
                var mc:MyComp = new MyComp();
                mc.addEventLister( //completes: SOME_EVENT + Sprite events
          }
     }
}
12 голосов
/ 24 марта 2009

Мы используем его для привязки пользовательских событий к нашим пользовательским компонентам MXML. Этот тег позволяет ссылаться на него из MXML. См. документацию :

[Event(name="enableChanged", type="flash.events.Event")]

class ModalText extends TextArea { ... }

<MyComp:ModalText enableChanged="handleEnableChangeEvent(event);"/>

Однако компилятор будет жаловаться, если вы попытаетесь сослаться на событие в теге mxml, которое не было объявлено с метатегом события.

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