書き物

技術とか作った物の話とか愚痴文句感想など

Flex4でSpriteを使う

Flex で画面を作るのに MXML はとても便利なので使いたいけど、同時に Shape をぐりぐり動かすようなゲームも作りたいというような場合、MXML で Shape を addChild したいことと思います。しかし、MXMLコンポーネントに対して Sprite を addChild しようとすると、例外が発生します。 こういう場合は、mx:Image に対して addChild をすると、Sprite を追加することができ、追加した Sprite に対して Shape なり Bitmap なりを addChild することで、自由にオブジェクトをぐりぐりできます。

サンプルコードは以下。今回の例は Flex4 の MXML ですが、Flex2Flex3 でも使えると思います。 <?xml version=“1.0” encoding=“utf-8”?> <s:Application xmlns:fx=“http://ns.adobe.com/mxml/2009” xmlns:s=“library://ns.adobe.com/flex/spark” xmlns:mx=“library://ns.adobe.com/flex/mx”>

<mx:Image id="rootObject" initialize="_onInitialize()">
</mx:Image>

<fx:Script>
    <![CDATA[
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.events.Event;

    private var _rootSp:Sprite;
    private var _shape:Shape;

    private function _onInitialize():void
    {
        _rootSp = new Sprite();
        _rootSp.addEventListener(Event.ENTER_FRAME, _onEnterFrame);
        rootObject.addChild(_rootSp);

        _shape = new Shape();
        _shape.graphics.beginFill(0);
        _shape.graphics.lineStyle(1, 0);
        _shape.graphics.drawCircle(0, 0, 10);
        _shape.graphics.endFill();

        _rootSp.addChild(_shape);
    }

    private function _onEnterFrame(event:Event):void
    {
        _shape.x++;
        _shape.y++;
    }

    ]]>
</fx:Script>

</s:Application>