AS3 Sprite добавлен в рабочую область, но не отображается - PullRequest
2 голосов
/ 30 ноября 2011

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

public class Main extends Sprite 
{       
    public function Main():void 
    {
        super();

        stage.scaleMode = StageScaleMode.NO_SCALE;
        stage.align = StageAlign.TOP_LEFT;

        var square:Sprite = new Sprite();   

        square.width = stage.stageWidth;
        square.height = stage.stageHeight;
        square.x = square.width / 2;
        square.y = square.height / 2;

        square.graphics.clear();
        square.graphics.lineStyle(3, 0xFF0000);
        square.graphics.beginFill(0xFF0000);
        square.graphics.drawRect(0, 0, width, height);
        square.graphics.endFill();

        square.addEventListener(Event.ADDED_TO_STAGE, addedToStage);
        square.addEventListener(MouseEvent.CLICK, onClick);

        addChild(square);
     }

     private function addedToStage(e:Event):void 
     {
          trace("Added sprite to stage");           
     }
     private function onClick(e:Event):void 
     {
          trace("Got click on sprite");         
     }      
}

Трассировка показывает, что спрайт был добавлен на сцену, но ничего не отображается, и если я нажму на него, функция onClick никогда не будет вызвана. Если я использую TextField вместо Sprite, он отображается просто отлично. Должно быть что-то странное в Спрайтах.

Что я делаю не так?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Попытка установить ширину и высоту для пустого Sprite вернет 0. Посмотрите на здесь .

и

См. Ответ мистера Марти Уоллеса.

2 голосов
/ 30 ноября 2011

Ваша проблема здесь:

square.graphics.drawRect(0, 0, width, height);

Значения width и height в этой строке 0. Причина в том, что они ссылаются на свойства width и height класса, в котором вы работаете (Main - свойства, унаследованные от DisplayObject), которые будут равны нулю в зависимости от Я вижу.

По сути, вы говорите:

square.graphics.drawRect(0, 0, 0, 0);

Что ничего не сделает.

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