Animate CC 2017にdrawTrianglesの不具合があるようです。


animate cc 2017(windows 10 on desktop)にアップデートしたところ、drawtrianglesに不具合が発生しました。ガーベッジが表示されるケースがあります。

animate cc 2015(windows 10 on desktop)では正常に動作していたものです。

問題切り分けのため、末尾のようなコードで検証を行ったところ、いくつかのことがわかりました。

 

1. パブリッシュのターゲットがflash player 23の場合は、問題なく動作する。

2. パブリッシュのターゲットがair 23.0 desktopの場合に不具合が発生するケースがある。

3. air 23.0 deskにおいて、イメージ・ローダーからのdrawでbitamapdataを作成した場合には問題が発生するが、

event.target.contentから取得した場合は正常に動作する。

 

どなたか、この不具合の解決方法をご存知の方がおられましたら、どうかご教示ください。よろしくお願いいたします。

 

以下、検証用のコードです。

 

//======================================================================================== =======================================

package {

    import flash.display.*;

    import flash.events.*;

    import flash.system.*;

    import flash.net.urlrequest;

    import flash.utils.*;

    import flash.geom.*;

    import flash.net.*;

    import flash.net.urlloader;

    import flash.net.urlloaderdataformat;

    import flash.net.urlrequest;

    import flash.ui.*;

 

    public class main extends sprite {

        private var image_loader:loader = new loader();

        private const url_image:string = "test.jpg";

 

        public function main() {

            image_loader.contentloaderinfo.addeventlistener(event.complete, oncomplete);

            image_loader.contentloaderinfo.addeventlistener(ioerrorevent.io_error, onerror);

            image_loader.load(new urlrequest(url_image));         

        }

        public function onerror(event:event):void {

            trace("image not found");

        }

     

        public function oncomplete(event:event):void {

         

            // my_bitmapdata via event.target.content ( namely bmd style -1 )

            var my_bitmapdata:bitmapdata = event.target.content.bitmapdata;

            var img_width:int = my_bitmapdata.width;

            var img_height:int = my_bitmapdata.height;

         

            // my_bitmapdata2 via draw image_loader ( nmaley bmd style-2 ) 

            var img_width2:int = image_loader.width;

            var img_height2:int = image_loader.height;

            var my_bitmapdata2:bitmapdata = new bitmapdata(img_width2, img_height2, true, 0x00ff0000);

            my_bitmapdata2.draw(image_loader, null, null, null, null, false);

 

         

            var output1:sprite = new sprite();

            var output2:sprite = new sprite();

            var output3:sprite = new sprite();

            var output4:sprite = new sprite();

            var output5:sprite = new sprite();

            var pos_y:int = 0;

            var space:int = 0;

            var skip:int = img_height + space;

            output1.x = 0; output1.y = pos_y; pos_y+= skip;

            output2.x = 0; output2.y = pos_y; pos_y+= skip;

            output3.x = 0; output3.y = pos_y; pos_y+= skip;

            output4.x = 0; output4.y = pos_y; pos_y+= skip;

         

            addchild(output1);

            addchild(output2);

            addchild(output3);

            addchild(output4);

         

            tstdraw(output1, my_bitmapdata,img_width, img_height,0);// test1 -> drawrect        bmd style-1 

            // 上記テスト問題なし

         

            tstdraw(output2, my_bitmapdata,img_width, img_height,1);// test2 -> drawtriangles    bmd style-1

            // 上記テスト問題なし

         

            tstdraw(output3, my_bitmapdata2,img_width2, img_height2,0);// test3 -> drawrect    bmd style-2 

            // 上記テスト問題なし

         

            tstdraw(output4, my_bitmapdata2,img_width2, img_height2,1);// test4 -> drawtriangles    bmd style-2

            // 上記テストは、パブリッシュのターゲットがair 23.0 desktopの場合に不具合が発生する

        }

     

 

        private function tstdraw(spr:sprite, bmd:bitmapdata, wd:int, ht:int, sel:int) {

 

            var uvt:vector.<number> =  vector.<number>([0,0,0,1,1,0,1,1]);

            var vert:vector.<number> = vector.<number>([0,0,0,ht,wd,0,wd,ht]);

            var ind:vector.<int> = vector.<int>([0,1,2,1,3,2]);

            spr.graphics.clear();

            spr.graphics.beginbitmapfill(bmd,null,false,false);

            switch (sel) {

                default:

                case 0:

                    spr.graphics.drawrect(0,0,wd,ht);

                    break;

                case 1:

                    spr.graphics.drawtriangles(vert, ind, uvt); 

                    break;

            }

            spr.graphics.endfill();

        }

     

    }

}



Animate CC(Character Animator CC含む)コミュニティフォーラム (Japan) でのその他のディスカッション


adobe

Comments

Popular posts from this blog

Reader DC

AdobeIDの作り方

Adobe InDesign CC 2017 has stopped working