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
Post a Comment