Есть ли способ расширить классы, которые были встроены? (AS3) - PullRequest
1 голос
/ 30 июля 2011

У меня есть файл ресурсов, который встраивает вещи,

[Embed(source='assets.swf', symbol='block')]
public static const SYM_BLOCK:Class;

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

EX:

package isoscreen 
{
    import assets.Assets;

    public class isoBlock extends SYM_BLOCK
    {

...

    import assets.Assets.SYM_BLOCK;

    public class isoBlock extends SYM_BLOCK
    {

...

    import assets.Assets;

    public class isoBlock extends Assets.SYM_BLOCK
    {

...

это возможно? Я нигде не видел таких примеров.

ОТВЕТ

Ответ был прост, когда-то мне показывали. =)

Но потребовалось немного повозиться.

[Embed(source='/assets/assets.swf#block')] // you need to properly change the linkage to the file if your assets are in their own folder (also I found # as a shorthand to get to the symbol inside of the swf)
public class isoBlock extends Sprite
{
    public var top, left, right; //You need to define each symbol within the symbol as well, or it will fail to create. 

Спасибо, ребята.

Ответы [ 2 ]

3 голосов
/ 30 июля 2011

Символ не совсем то же самое, что и класс, поэтому вы не можете его расширить. Однако вы можете привязать символ к своему классу, так же, как это было бы при создании Flash.

package foo {

    [Embed(source='assets.swf', symbol='block')]

    public class BlockClass extends MovieClip {
        // if your symbol only has one frame, extend Sprite instead
    }

}
1 голос
/ 30 июля 2011

Вы не можете сделать это по разным причинам.Наиболее важным является:

Вы не можете использовать переменные в объявлениях классов.Например: class A extends myVar не допускается.

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