Как отправить данные изображения в пользовательский класс? - PullRequest
0 голосов
/ 29 июля 2011

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

Возможно ли сделать это с помощью bitmapData или путем ссылки на него через библиотеку (если я сохраню свою фотографию в мувиклипе в библиотеке?

Вот мой класс:

package  com{
import flash.display.MovieClip;
import fl.transitions.Tween;
import fl.transitions.easing.Strong;

public class tileCreator extends MovieClip{

    public var tiled:MovieClip;
    public var sourceImage:MovieClip = new MovieClip;

    public function tileCreator() {
        trace("tile creator");
        tiled = new MovieClip;
        tiled.graphics.beginFill(0x666666, 0.3);
        tiled.graphics.drawRoundRect(-55/2, -55/2, 55, 55, 15, 15);
        this.addChild(tiled);
    }
}

}

Ответы [ 3 ]

0 голосов
/ 29 июля 2011

Вы можете создать «снимок» этого с помощью bitmapData.Затем вы можете передать это в любой другой класс, который вы хотите.Код показан ниже.

//This code goes into your TileCreator-class
public function draw():BitmapData
{
    //True and 0 at the end of creating this bitmap ensure transparancy 
    //for the transparant pixels (else these would be opaque)
    var bmp:BitmapData = new BitmapData(width, height, true, 0);
    bmp.draw(this);

    return bmp;
}
0 голосов
/ 29 июля 2011

да, это возможно с помощью BitmapData.

импортируйте изображение в библиотеку и щелкните его правой кнопкой мыши, чтобы изменить «настройки ...». Вы должны проверить «экспорт для ActionScript» и поместить имя во второе текстовое поле под флажком - скажем, «MyImage». (flash автоматически добавляет базовый класс типа flash.display.BitmapData).

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

var myImage:MyImage = new MyImage();

это объект BitmapData, потому что ваш класс MyImage расширяет BitmapData.

тогда вам просто нужно добавить BitmapData в конструктор в качестве аргумента (переименуйте ваш класс в Tile, потому что это не создатель, а сам тайл, который вы создаете. И используйте заглавную букву!).

public class Tile extends MovieClip
{
   public function Tile (img:BitmapData)
   {
      var bmp:Bitmap = new Bitmap(img);
      addChild(bmp);
      tiled = new MovieClip;
      tiled.graphics.beginFill(0x666666, 0.3);
      tiled.graphics.drawRoundRect(-55/2, -55/2, 55, 55, 15, 15);
      addChild(tiled);
      bmp.mask = tiled;
   }
} 
0 голосов
/ 29 июля 2011

вам нужно сделать это следующим образом:

function createBitmap ( yourMovieClipYouWantToBeAsImage : DisplayObject ) : Bitmap
{
    var bitmapData:BitmapData = new BitmapData ( width, height );
        bitmapData.draw ( yourMovieClipYouWantToBeAsImage );
    var bitmap:Bitmap = new Bitmap ( bitmapData );

    return bitmap; // do what ever you want with it but now as an image
}
...