Archive for December, 2008

搞了一个as3的开源项目到google code上

Wednesday, December 24th, 2008

只是为了自己备份下写过的功能而已,如果谁有兴趣也可以去checkout下来.注释和文档很完整的.
名叫astrois,会不断更新:
http://code.google.com/p/astrois/
IE支持在线文档地址:
http://astrois.googlecode.com/svn/trunk/docs/index.html

flash里的背景平铺

Monday, December 1st, 2008

其实有很多方法实现,这里就按播放器的版本从低到高的实现方法来说好了:

1.载入位图后duplicateMovieClip
如果播放器必须发布成<=7,就只能使用以下方法,原理就是载入一个swf,它的库里有个包含linkID的位图movieclip,attachMovie后遍历duplicateMovieClip到舞台上。

  1. var a:Number = Math.floor(Stage.width / img_width);
  2. var b:Number = Math.floor(Stage.height / img_height);
  3. for (var i:Number = 0; i<=b; i++) {
  4.     for (var j:Number = 0; j<=a; j++) {
  5.         bg_mc.duplicateMovieClip("bg_"+i+"_"+j, bg_mc.getNextHighestDepth(), {_x:j*img_width, _y:i*img_height});
  6.     }
  7. }

2.载入位图draw后,生成bitmap平铺。
如果播放器可以发布成8,就可以使用以下方法。其实原理和1差不多,不过8开始引入了Bitmap,因为平铺的是bitmap,所以肯定比1更节约资源。

  1. var bmpData:BitmapData = new BitmapData(img_width, img_height);
  2. bmpData.draw(img_target);
  3. for(var i:Number = 0;i<Math.ceil(h/img_height);i++)
  4. {
  5.      for(var j:Number = 0;j<Math.ceil(w/img_width);j++)
  6.      {
  7.          var bmp:Bitmap = new Bitmap(bmpData);
  8.          bmp.y = img_height*i;
  9.          bmp.x = img_width*j;
  10.      }
  11. }

3.载入位图draw后,通过位图填充功能填充graphic子对象。
如果播放器可以发布成9,就可以使用以下方法。9开始引入了位图填充,所以根本不用考虑什么平铺,直接就和Photoshop里的自定义图案填充一样方便。

  1. var bmpData:BitmapData = new BitmapData(img_width, img_height);
  2. bmpData.draw(img_target);
  3. var graphic:Graphics = shell.graphics;
  4. graphic.beginBitmapFill(bmpData);
  5. graphic.drawRect(0,0,w,h);
  6. graphic.endFill();