0

オブジェクトをクリックするとオブジェクトが光るゲームを作成しようとしています。画像を埋め込んでビットマップに渡すと、次のように正常に動作します。

   package  
    {
    import org.flixel.*;    

    public class HelloWorld extends FlxState

{

    [Embed(source = "pics/Cancer.png")] private var cancerIMG:Class;
    private var cancer:FlxSprite; 

    private var title_text:FlxText;     

    public function HelloWorld() 
    {
    }       

    override public function create():void
    {           

        /**
         * Glow method test
         */  
        //Start Test
        var bigbitmap:BitmapData = new BitmapData(320, 288, true, 0x00000000);
        bigbitmap.copyPixels(Bitmap(new cancerIMG).bitmapData, new Rectangle(0, 0, 160, 288), new Point(16, 16), null, null, true);

        cancer = new FlxSprite;
        cancer.pixels = bigbitmap;

        add(cancer);        
        //End Test

    }

    override public function update():void
    {

        super.update();          
    }       

}   
} 

ただし、同じメソッドを使用してクラス スプライトを渡そうとすると、次のようになります。

        _bx = new box(120, 120);            

        var bigbitmap:BitmapData = new BitmapData(320, 288, true, 0x00000000);
        bigbitmap.copyPixels(Bitmap(_bx.pixels).bitmapData, new Rectangle(0, 0, 160, 288), new Point(16, 16), null, null, true);

        _bx.pixels = bigbitmap;         
        add(_bx);

ボックスを次のように呼び出します。

    public var _bx:box; 

これ自体が FlxExtendedSprite です (テストのために通常の FlxSprite に戻しました)。試してみると、次のエラーが表示されます。

エラー #1034: タイプの強制に失敗しました: flash.display::BitmapData@3960701 を flash.display.Bitmap に変換できません。

この効果を修正して、このようなクラスで動作させる方法はありますか?

前もって感謝します!

4

2 に答える 2

1

_bx.pixels は BitmapData なので、これくらい簡単だと思います。少なくとも私のテスト設定では動作します。

bigbitmap.copyPixels(_bx.pixels, new Rectangle(0, 0, 160, 288), new Point(16, 16), null, null, true);
于 2012-06-18T08:37:05.783 に答える
0

本当に見つけるのはそれほど難しいことではありません..

//This goes in the package, at the top of your .as
import flash.filters.GlowFilter;

//This goes in your class
var myFilter:GlowFilter = new GlowFilter(0xffffff, 1, 1.5, 1.5, 30, 4); //(color, alpha, blurX, blurY, strength, quality);

//This goes wherever you want to apply this method
myMC.filters = [myFilter];
于 2012-06-18T09:32:34.817 に答える