2012-06-17 18 views
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。

有沒有一種方法可以解決這個問題,並讓它與類似的類一起工作?

在此先感謝!

+0

這聽起來像你正在嘗試使用在需要的位圖的BitmapData。但是,根據你的代碼;我不確定哪一行是拋出錯誤,我不熟悉Flixel類。 – JeffryHouser

+0

這給我一個可能的解決方案。有沒有辦法可以將其中一個轉換爲另一個? – xhunterko

+0

是的,您可以使用bitMapData屬性從BitMap獲取BitMapData。 http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/Bitmap.html#bitmapData。您可以通過將數據指定爲構造函數參數來從BitMapData創建一個BitMap http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Bitmap.html#Bitmap() – JeffryHouser

回答

1

_bx.pixels是一個BitmapData,所以我認爲它很簡單。至少在我的測試設置中工作。

bigbitmap.copyPixels(_bx.pixels, new Rectangle(0, 0, 160, 288), new Point(16, 16), null, null, true); 
+0

你試過這個嗎?它有幫助嗎? – WgFunstorm

0

Really not that hard to find..

//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]; 
+0

誰低估了,請告訴我爲什麼你這樣做,以便我可以將建議考慮在內:) – poepje

+0

好的,但這是Adobe文檔,它不會隨時關閉。但我明白你的觀點。我這樣做的原因是,在回答時,我也說OP應該先查找它,然後在SO上發佈這樣的問題。 – poepje

+0

好吧,我說得很對。 – poepje

相關問題