Как я могу добавитьChild BitmapData или нарисовать BitmapData на экране? - PullRequest
2 голосов
/ 15 июля 2009

В настоящее время я работаю над флеш-игрой, и мне нужно знать, как добавить данные BitmapData или нарисовать BitmapData на экране. Если я не могу, чем я могу дать DisplayObject мои BitmapData?

Ответы [ 2 ]

7 голосов
/ 15 июля 2009

Объекты BitmapData нельзя добавлять непосредственно на экран, поскольку они не являются потомками DisplayObject. Если вы хотите отобразить содержимое объекта BitmapData, вам нужно использовать Bitmap и его свойство bitmapData. Если вы используете Flex, вам нужно убедиться, что вы помещаете растровое изображение в экземпляр UIComponent или в один из его подклассов. В противном случае, если вы просто используете AS3 во Flash, это будет сделано:

    package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.geom.Point;

    public class BitmapDataExample extends Sprite
    {
        public function BitmapDataExample()
        {
            super();

            var canvasSize:uint = 100;
            var size:uint = 5;
            var bd:BitmapData = new BitmapData (canvasSize, canvasSize, false, 0x000000);

            var bmp:Bitmap = new Bitmap (bd);
            addChild(bmp);

            // everything from this point on is just drawing junk into the BitmapData object
            var p:Point = new Point (0, 0);
            for (var y = 0; y < canvasSize; y++)
            {
                p.y = y;

                for (var x = 0; x < canvasSize; x++)
                {
                    p.x = x;

                    if (p.x % size == p.y % size)
                        bd.setPixel(p.x, p.y, 0x00FF00);
                }
            }
        }

    }
}
5 голосов
/ 15 июля 2009

Вот пример приложения AIR, созданного вместе, чтобы проиллюстрировать один из способов сделать это, если предположить, что я правильно понял вопрос:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()">

    <mx:Script>
        <![CDATA[

            import mx.core.UIComponent;

            private function onCreationComplete():void
            {
                // Some sample bitmap data
                var bmpd:BitmapData = new BitmapData(50, 50, false, 0xFF0000);

                // Create a new bitmap, created from the data
                var bmp:Bitmap = new Bitmap(bmpd);

                // Wrap the bitmap in UIComponent
                var uic:UIComponent = new UIComponent();
                uic.addChild(bmp);

                // Add your UIComponent to the display list
                addChild(uic);
            }

        ]]>
    </mx:Script>

</mx:WindowedApplication>

По сути, вам нужно знать, что ваши BitmapData должны быть сначала обернуты в объект Bitmap, и что полученный объект Bitmap является объектом DisplayObject, поэтому, прежде чем его можно будет добавить в список отображения, его нужно обернуть в экземпляр UIComponent.

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

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