メインコード:
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;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.display.DisplayObject;
import flash.display.Bitmap;
public class Init extends Sprite {
var rects:Array,
numRects:int = stage.stageWidth / _width,
_width:Number = 20,
_height:Number = 80,
_rotation:int = 0,
_vr:Number = 3;
public function Init() {
init();
}
function init():void
{
rects = new Array();
var bitmap:BitmapData = new slider();
var _point = new Point();
for(var i:int = 0; i < numRects; i++)
{
var _rect = new Rectangle(i * _width, 0, _width, 80);
var smallBD:BitmapData = new BitmapData(_width, 80);
smallBD.copyPixels(bitmap, _rect, _point);
//var d:Bitmap = new Bitmap(smallBD);
var rect:Rect = new Rect(smallBD, _width, _height);
rect.x = i * _width + _width / 2;
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 += _vr;
}
_rotation += _vr;
if(_rotation % 180 == 0)
{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
}
}
これはrectクラスです:
package {
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.display.Bitmap;
import flash.display.BitmapData;
public class Rect extends Sprite {
private var bitmap:BitmapData,
_width:Number,
_height:Number;
public function Rect(bitmap:BitmapData, width:Number = 20, height:Number = 80) {
this.bitmap = bitmap;
this._width = width;
this._height = height;
init();
}
function init():void
{
graphics.beginBitmapFill(bitmap, null, true, true);
graphics.drawRect(-_width / 2, 0, _width , _height);
graphics.endFill();
}
}
}
インポートした画像を断片に分割し、各断片を各長方形のスプライトに追加するので、回転効果を作成していますが、問題は、作成時にスプライトを中央に配置できないことです(-_width / 2)
。各スプライトを x 軸で中央に配置し、x 位置に追加し_width / 2
ますが、画像が変形する理由がわかりません。780 x 80 の画像を取得して、このコードを試すことができます