Archive for August, 2008

as2 对象查看函数

Wednesday, August 13th, 2008
  1. function traceObject(obj:Object, indent:Number):Void {
  2.     indent = indent ? indent : 0;
  3.     var indentString:String = "";
  4.     var i:Number;
  5.     var prop:String;
  6.     var val;
  7.     for (i=0; i<indent; i++) {
  8.         indentString += " ";
  9.     }
  10.     for (prop in obj) {
  11.         val = obj[prop];
  12.         if (typeof (val) == "object") {
  13.             trace(indentString+" "+prop+": [Object]");
  14.             traceObject(val, indent+2);
  15.         } else {
  16.             trace(indentString+" "+prop+": "+val);
  17.         }
  18.     }
  19. }

方便以后用。

发布成fp8++的swf中利用bitmapData平滑显示图片

Tuesday, August 5th, 2008

其实在flash7和更早的版本只要用_quality = “HIGH”或”BEST”就可以控制图片平滑显示了,不过这样有个缺点,所有场景和元素都会平滑,严重消耗资源。
在flash8里adobe不让通过调整_quality来平滑图片了,可以利用bitmapData来替换。
在图片的MovieClipLoader加载完毕的时候:

  1. import flash.display.BitmapData;
  2. function __onLoadInit(target:MovieClip):Void {
  3.     var bd:BitmapData = new flash.display.BitmapData(target._width, target._height);
  4.     bd.draw(target);
  5.     target.attachBitmap(bd, 1, "auto", true);
  6. }

然后,这个target就被平滑的bitmapData替换掉了。
不过adobe似乎忘记了他对bitmapData的安全限制,fp9以下的客户端根本无法跨域draw到bitmapData,即使是fp9 plus,也要去loadPolicyFile,所以当图片分布在很多台服务器上的时候,根本没有什么好的办法解决这个问题,总不至于每打开一个app就遍历去加载几十个crossdomain.xml吧。
你干脆就不要让MovieClipLoader加载他出来,这样就没什么安全性问题了,这个世界也清净了,既然能加载出来,又不让draw,自相矛盾的啊,倒不如用回7算了。