Interactive nested arm segments
forked from nested arms (diff: 45)
Press down on any arm and use your arrow key left and right to rotate it as long as you keep the mouse button down.
ActionScript3 source code
/**
* Copyright milchreis ( http://wonderfl.net/user/milchreis )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/f1i5
*/
// forked from milchreis's nested arms
package
{
import flash.display.Sprite;
public class FlashTest extends Sprite
{
public function FlashTest()
{
var arm:Arm = new Arm(60,8);
arm.x = stage.stageWidth/2;
addChild(arm);
}
}
}
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
internal class Arm extends Sprite
{
private var color:uint = Math.random() * 0xffffff;
public function Arm (length:Number = 60, depth:uint = 0)
{
graphics.beginFill(color);
graphics.drawRoundRect(-20, -20, 40, length + 40, 40, 40);
if (depth > 0)
{
var arm:Arm = new Arm(length, depth-1)
arm.y = length;
addChild(arm);
}
addEventListener(MouseEvent.MOUSE_DOWN, onDown);
}
private function onDown(e:Event):void
{
e.stopPropagation();
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
}
private function onKey(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT)
rotation -= 10;
else if (e.keyCode == Keyboard.RIGHT)
rotation += 10;
}
private function onUp(e:MouseEvent):void
{
stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
stage.removeEventListener(MouseEvent.MOUSE_UP, onUp);
}
}
internal const trace:Function = Wonderfl.log;
