Добавление спрайтов на холст во Flex - PullRequest
0 голосов
/ 30 апреля 2011

В соответствии с просьбой, я даю более подробное описание проблемы ...

Во-первых, у меня есть этот MXML:

<mx:Panel x="270" y="10" width="690" height="680" id="mainContainerPanel">
    <mx:Canvas x="270" y="10" width="670" height="640" id="canvas" initialize="onInit()">
        <mx:Script>
            protected function onInit():void
            {
                spiro = new Spirograph(canvas);         
            }
        </mx:Script>
    </mx:Canvas>
</mx:Panel>

Это передает объект тега в конструктормоего основного файла класса AS3.Это прекрасно работает, где в конструкторе у меня есть:

function Spirograph(canvas:Canvas):void
{   
    mainContainer = canvas;
    mainContainer.graphics.beginFill(0xFFFFFF);
    mainContainer.graphics.drawRect(0, 0, 670, 640);
    mainContainer.graphics.endFill();
}

В настоящий момент я добавляю все объекты Sprite в mainContainer, используя класс-оболочку SpriteUIContainer:

package includes
{
    import flash.display.Sprite;

    import mx.core.UIComponent;

    public class SpriteUIContainer extends UIComponent
    {       
        public function SpriteUIContainer(sprite:Sprite)
        {
            super();
            this.explicitWidth = sprite.width;
            this.explicitHeight = sprite.height;
            this.x = sprite.x;
            this.y = sprite.y;
            addChild(sprite);
        }
    }
}

который используется следующим образом:

private var circCentre:Sprite = new Sprite();
circCentre.x = mainContainer.width / 2;
circCentre.y = mainContainer.height / 2;
circCentre.graphics.lineStyle(3, 0xD0B917); 
circCentre.graphics.beginFill(0xF2DF56, 0.2);
circCentre.graphics.drawCircle(20, 20, 50);
circCentre.graphics.endFill();
mainContainer.addChildAt(new SpriteUIContainer(circCentre), 1);

Circentre Sprite никогда не появляется на экране, и я не понимаю, как я могу заставить его появиться.

Любая помощь очень ценится!

1 Ответ

1 голос
/ 30 апреля 2011

Под «прикрепленным» вы подразумеваете, что добавляете новые спрайты в UIComponent, используя метод addChild?

Если так; Вам нужно будет добавить код к размеру и расположить этот новый «спрайт» относительно других объектов в контейнере. В вашем примере такого кода нет. Я рекомендую реализовать этот код в updateDisplayList ().

Дополнительная информация об updateDisplayList () содержится в жизненном цикле компонента Flex .

Если вам нужна дополнительная помощь, вам нужно будет больше узнать о том, как вы добавляете новые спрайты в экземпляр UIComponent; и, возможно, покажите пример, где вы добавите более одного.

...