Flash 如何让它与类而不是嵌入的图像一起工作?

Flash 如何让它与类而不是嵌入的图像一起工作?,flash,apache-flex,flixel,Flash,Apache Flex,Flixel,我正在尝试创建一个游戏,当你点击一个物体后,这个物体就会发光。当我嵌入图像并将其通过位图时,它工作正常,如下所示: package { import org.flixel.*; public class HelloWorld extends FlxState { [Embed(source = "pics/Cancer.png")] private var cancerIMG:Class; private var cancer:Fl

我正在尝试创建一个游戏,当你点击一个物体后,这个物体就会发光。当我嵌入图像并将其通过位图时,它工作正常,如下所示:

   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; 
但是,每当我尝试使用相同的方法传递类sprite时,如下所示:

   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; 
我这样称呼这个盒子:

   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:类型强制失败:无法转换闪存。显示::BitmapData@3960701要刷新.display.Bitmap

有没有一种方法可以修复这种效果,并让它与这样的类一起工作


提前谢谢

\u bx.pixels是位图数据,所以我认为它就这么简单。至少在我的测试设置中有效

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

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

听起来好像您正试图在需要位图的位置使用BitmapData。但是,基于您的代码;我不确定哪一行抛出了错误,我也不熟悉Flixel类。这给了我一个可能的解决方案。是否有任何方法可以将一个转换为另一个?是的,可以使用BitMapData属性从位图获取BitMapData。通过将数据指定为构造函数参数,可以从BitMapData创建位图。我会试着试一试,看看它是否有效。我还能做些什么来试着让它发挥作用呢?投票失败的那个人,请告诉我你为什么这么做,这样我才能考虑这个建议:)好的,但这是Adobe文档,它不会在任何时候都失败。但我明白你的意思。我这样做的原因是,在回答问题的时候,我还说OP应该在发布这样的问题之前先查一下。你试过这个吗?有帮助吗?