forked from: forked from: コロコロ転がる
forked from forked from: コロコロ転がる (diff: 8)
カヤックさんの記事を読んで四角を転がす実験 参考:getBounds + Matrixで、もう基準点にはこだわらない。 http://level0.kayac.com/2009/11/matrix_with_getbounds.php ループの処理の挙動がイマイチ。。。 ... @author 393
ActionScript3 source code
/**
* Copyright fukt ( http://wonderfl.net/user/fukt )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/eogU
*/
// forked from fukt's forked from: コロコロ転がる
// forked from sakusan393's コロコロ転がる
//カヤックさんの記事を読んで四角を転がす実験
//
//参考:getBounds + Matrixで、もう基準点にはこだわらない。
//http://level0.kayac.com/2009/11/matrix_with_getbounds.php
//
//ループの処理の挙動がイマイチ。。。
package {
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author 393
*/
public class KoroKoro extends Sprite{
public function KoroKoro() {
//100個転がす
for (var i:uint = 0; i < 100;i++){
//第一引数:表示リスト
//第二引数:x座標
//第三引数:y座標
//第四引数:幅
//第五引数:高さ
//第六引数:スピード
addChild(new Koro(this,Math.random()*300,Math.random()*300,Math.random()*50+1,Math.random()*100+1,Math.random()*5+5) );
}
}
}
}
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Rectangle;
class Koro extends Sprite {
private var _degree:Number = 0;
private var _w:Number;
private var _h:Number;
private var _rect:Rectangle;
private var _matrix:Matrix
private var _speed:Number;
private var _container:KoroKoro;
private var _countNumber:Number;
public function Koro(container:KoroKoro,posX:Number = 10, posY:Number = 100, w:Number = 100, h:Number = 50,speed:Number = 10) {
//四角を作る
var colorArray:Array = new Array(0xFFFF00, 0xFFFFFF, 0x00000ff, 0xFF3333, 0xFFCC33, 0x99CC33);
var randomColorID:Number = Math.floor(Math.random()*colorArray.length);
// var colorTransform:ColorTransform = rct.transform.colorTransform;
graphics.beginFill(Math.floor(0xFF00FF)) //* Math.random()));
graphics.drawRect(posX, posY, w, h);
graphics.endFill();
//速度定義
_speed = speed;
//親コンテナ
_container = container
addEventListener(Event.ADDED_TO_STAGE , init);
}
//初期設定
private function init(e:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
_matrix=this.transform.matrix;
_rect = this.getBounds(_container);
_w=this.width;
_h=this.height;
_degree=0;
_countNumber = 0;
this.addEventListener(Event.ENTER_FRAME , enterFrameHandler);
}
private function enterFrameHandler(e:Event):void {
roll();
_degree += _speed;
if (_degree >= 90) {
var max:Number = Math.max(width, height);
if (x >= stage.stageWidth+ max*2){
_matrix.tx = -width;
_matrix.ty = Math.random() * 200;
this.transform.matrix=_matrix;
}
setProp();
}
}
private function roll():void{
_matrix.translate(-(_rect.left + _rect.width),-(_rect.top + _rect.height));
_matrix.rotate(_speed*Math.PI/180);
_matrix.translate((_rect.left + _rect.width), (_rect.top + _rect.height));
this.transform.matrix=_matrix;
}
private function setProp():void{
_w=this.width;
_h=this.height;
_degree=0;
_rect=this.getBounds(_container);
}
}