2012-11-28 22 views
1
package { 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.text.TextField; 
    import flash.net.URLVariables; 
    import flash.net.URLRequest; 
    import flash.events.Event; 

    public class Init extends Sprite { 

     var rects:Array, 
     numRects:int = stage.stageWidth/_width + 1, 
     _width:Number = 20, 
     _height:Number = 80, 
     _rotation:int = 0; 

     public function Init() { 

      init(); 
     } 

     function init():void 
     { 
      rects = new Array(); 
      for(var i:int = 0; i < numRects; i++) 
      { 
       var rect:Rect = new Rect(); 
       rect.x = i * 20; 
       addChild(rect); 
       rects.push(rect); 
      } 

      addEventListener(Event.ENTER_FRAME, onEnterFrame); 
     } 

     function onEnterFrame(e:Event):void 
     { 

      for(var i:int = 0; i < numRects; i++) 
      { 
       rects[i].rotationY += 1; 
      } 

      _rotation += 1; 
      if(_rotation % 180 == 0) 
      { 
       removeEventListener(Event.ENTER_FRAME, onEnterFrame); 
      } 

     } 

    } 

} 

這是矩形類:如何削減一個大的圖像分成許多影片剪輯(FLASH)

package { 
    import flash.display.Sprite; 

    public class Rect extends Sprite { 

     private var color:uint, 
     _width:Number, 
     _height:Number; 
     public function Rect(color:uint = 0x000000, width:Number = 20, height:Number = 80) { 

      this.color = color; 
      this._width = width; 
      this._height = height; 
      init(); 
     } 

     function init():void 
     { 
      graphics.beginFill(color); 

      graphics.drawRect(0, 0, _width, _height); 

      graphics.endFill(); 


     } 

    } 

} 

所以我創造了許多長方形和20像素移動它們每一個循環,所以現在他們充滿了顏色,但如果我有一個高度相當於這些矩形的大圖像,然後剪切該圖像並用圖像的一部分填充每個矩形,就像製作拼圖部件一樣,我已經將圖像導入我的圖書館,但現在我不知道該怎麼做,請任何想法?

回答

1

簡而言之:如果您要分割圖像,請使用Bitmaps作爲您的Rect兒童或基地,並使用基礎BitmapData.copyPixels()方法來填充您的rects位圖與來自一個大圖像的像素。一個例子:

 var megabase:BitmapData = new BigImage().bitmapData; // BigImage is an embedded asset name 
     _sequence = new Vector.<BitmapData>(); 
     _rect = new Rectangle(0, 0, 64, 64); // my parts of image are 64x64 all, in general you should have (x,y,w,h) declared somewhere 
     _point = new Point(); 
     var smallBD:BitmapData; 
     _sequence = new Vector.<BitmapData>(); 
     for (i = 0; i < ssa.length; i++) { 
      // ssa is a (x,y) array defining areas that each sprite will contain 
      smallBD = new BitmapData(64, 64, true, 0); 
      _rect.x = ssa[i][0]; 
      _rect.y = ssa[i][1]; 
      smallBD.copyPixels(megabase, _rect, _point); 
      _sequence.push(smallBD); 
     } 

此分割一個巨大megabase圖像到佈置作爲BitmapData矢量一個對象數64×64的圖像。你顯然會有不同的基礎結構,但主要原理在這裏有說明。

+0

太棒了,謝謝我需要的東西 – Zecrow