7
    var subimage = new Bitmap();
    subimage.bitmapData = new BitmapData(25, 25, true, 0);
    addChild(subimage);

私が読んだすべてのことから、これは透明でなければなりません。大きな黒い四角が見えます。何が原因でしょうか?

4

4 に答える 4

13

これを使って

new BitmapData(25, 25, true, 0x00000000);

それ以外の

new BitmapData(25, 25, true, 0);

0xFF000000は黒(0x000000)で、アルファは1に等しい

0x00000000は黒(0x000000)で、アルファは0です。

色とアルファがどのように機能するかについての良い説明があります:http://myflex.wordpress.com/2007/09/07/about-hex-color-codes-in-flex-as3/

//編集:

DennisKrøgerとstrilleは正しい、0x00000000 ==0。問題は、貼り付けたコードではなく、別の場所にあるようです。

于 2012-08-25T13:04:34.397 に答える
3

ActionScriptは、32ビットの16進数を使用して、色の値を透明度で表します。32ビット変数としてのARGB色は、各8ビット/または各2hexの4つのグループによって指定されます。

バイナリの場合:AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB

16進数:AA RR GG BB

Aはアルファ値(透明度)、Rはrd、Gは緑、Bは青を表します。各グループは、各カラーチャネルの強度を定義します。Aはアルファ、Rは赤、Gは緑、Bは青です。アルファチャネルの完全な強度はアルファ(FF)がないことを意味し、強度(00)がないことは完全なアルファを意味します。したがって、透明なピクセルの色の値は0x00rrggbbです。

于 2012-08-25T13:10:56.233 に答える
3

BitmapDataを作成するか、新しいBitmapオブジェクトのコンストラクターに渡すか、作成後に参照によって編集することができます。どちらのオプションも機能します。

package 
{
    //Imports
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;

    //Document Class
    public class Main extends Sprite 
    {
        //Constructor
        public function Main() 
        {
            var bmpData:BitmapData = new BitmapData(200, 200, true, 0x5500FF00);
            var bmp:Bitmap = new Bitmap(bmpData);

            addChild(bmp);

            var bmp2:Bitmap = new Bitmap();
            bmp2.bitmapData = new BitmapData(200, 200, true, 0x55FF0000);
            bmp2.x = bmp2.y = 200;

            addChild(bmp2);
        }
    }
}
于 2012-08-25T17:28:42.693 に答える
2

それは意味がありません:私は次のコードを試しました:

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

public class TestBitMap extends Sprite
    {
        public function TestBitMap() {
            var imageYellow:Bitmap = new Bitmap(new BitmapData(100, 100, true, 0xFFFFFF00));
            var imageTransparent:Bitmap = new Bitmap(new BitmapData(100, 100, true, 0));
            var imageSemiTransparent:Bitmap = new Bitmap(new BitmapData(100, 100, true, 0x99000000));
            imageTransparent.x = 25;
            imageTransparent.y = 25;
            imageSemiTransparent.x = 50;
            imageSemiTransparent.y = 50;
            addChild(imageYellow);
            addChild(imageTransparent);
            addChild(imageSemiTransparent);
        }       
    }
}

そして、その上に半透明の黒いボックスが付いた黄色のボックスを手に入れました。「imageTransparent」は完全に見えませんでした。

また、最初にBitMapを作成し、次にbitmapDataを変更してメソッドを試しました。違いはありませんが、まだ見えません。

San.chez:0は、何があっても0x00000000に等しくなります。これは符号なし整数であり、ActionScriptは魔法のように変更しません。あなたのリンクは良いです。

于 2012-08-25T16:13:32.593 に答える