マウスホイールイベントの実験
forked from 変なもの。 (diff: 25)
最初にしたかったことと大幅にズレてしまい結局もう何が何だか。
ActionScript3 source code
/**
* Copyright seino ( http://wonderfl.net/user/seino )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/kHuV
*/
// forked from kagetiyo523's 変なもの。
//最初にしたかったことと大幅にズレてしまい結局もう何が何だか。
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.Timer;
public class RingCommand extends Sprite {
public function RingCommand():void {
for(var i:int=0;i<30;i++){
var menuRing:Sprite = new MenuRing(stage.stageWidth * Math.random(),stage.stageHeight * Math.random());
var rdm:Number = Math.random();
menuRing.scaleX *= rdm;
menuRing.scaleY *= rdm;
stage.addChild(menuRing);
}
}
}
}
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
class MenuRing extends Sprite{
private const distance:int = 15;//中心点からの距離
private var btnArr:Array = new Array;
public function MenuRing(centerX:int,centerY:int):void{
var ragian:int;
var timer:Timer;
var cnt:int = 0;
x = centerX;
y = centerY;
for(var i:int=0;i<5;i++){
var spr:Sprite = new MenuButton();
btnArr.push(spr);
}
ragian = Math.round(360 / btnArr.length);//360を超えないでください><
timer = new Timer(100);
timer.addEventListener("timer", function():void{
btnArr[cnt].setting(distance,ragian*(cnt+1));
addChild(btnArr[cnt]);
cnt++;
if(cnt == btnArr.length){
timer.removeEventListener("timer", arguments.callee);
timer.stop();
stage.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheel);
}
});
timer.start();
}
private function onMouseWheel(e:MouseEvent):void{
rotationZ += e.delta;
}
}
import flash.display.Sprite;
import flash.events.Event;
class MenuButton extends Sprite{
private var gX:int = 0;
private var gY:int = 0;
//引数に画像とか使えるようにしたい。
public function MenuButton(){
graphics.beginFill(0xff6699,1);
graphics.drawCircle(0,0,10);
graphics.endFill();
}
public function setting(distance:int,ragian:int):void{
gX = x + Math.cos(ragian * Math.PI / 180) * distance;
gY = y + Math.sin(ragian * Math.PI / 180) * distance;
addEventListener(Event.ENTER_FRAME,positionSet);
}
public function positionSet(e:Event):void{
x = (x + gX) /2;
y = (y + gY) /2;
if(Math.round(y) == gY && Math.round(x) == gX){
y = gY;
x = gX;
removeEventListener(Event.ENTER_FRAME ,positionSet);
}
}
}
