Droid paq forked:15favorite:36lines:192license : MIT License modified : 2011-01-08 18:31:55 Embed Tweet package { import flash.display.MovieClip; import flash.events.Event; /** * お年賀企画のFlash2Android用に作った. * ただし、Androidはもっていない. * ふて寝しているように見えてくる. * @author paq89 */ [SWF(width="465", height="465", backgroundColor="0xFFFFFF", frameRate="60")] public class Android extends MovieClip { private var happy:Year; public function Android() { happy = new Year(2011, this); happy.start("あけましておめでとうございます。今年はFlashでAndroidアプリを作ってみませんか?"); } } } //package //{ import Box2D.Collision.b2AABB; import Box2D.Common.Math.b2Vec2; import com.actionsnippet.qbox.QuickBox2D; import com.actionsnippet.qbox.QuickObject; import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import flash.display.Graphics; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; /** * Year クラスは クラス名とはかけ離れていますが、中身はDroidです. * TODO: 整ったコードにする * @author paq89 */ /*public*/ class Year extends Sprite { private var _box2d:QuickBox2D; private var mc:MovieClip; private var bodyGroup:QuickObject; /** * コンストラクター. */ public function Year(arg:*, parent:DisplayObjectContainer) { parent.addChild(this); _box2d = new QuickBox2D(addChild(new MovieClip()) as MovieClip); _box2d.mouseDrag(); createWalls(); } /** * エンターフレームイベント. */ private function loop(event:Event = null):void { mc.x = bodyGroup.x * 30; mc.y = bodyGroup.y * 30; mc.rotation = bodyGroup.angle * (180 / Math.PI); } /** * QuickBox2Dを開始します. */ public function start(arg:*):void { _box2d.start(); addEventListener(Event.ENTER_FRAME, loop); createDroid(2, 2, 1); } /** * 壁を作成します. */ private function createWalls():void { var sw:Number = _box2d.main.stage.stageWidth / 30; var sh:Number = _box2d.main.stage.stageHeight / 30; // Top _box2d.addBox( { x:sw / 2, y: -0.5, width:sw, height:1, lineAlpha: 0, fillAlpha: 0, density:0.0 } ); // Bottom _box2d.addBox( { x:sw / 2, y:sh + 0.5, width:sw, height:1, lineAlpha: 0, fillAlpha: 0, density:0.0 } ); // Left _box2d.addBox( { x: -0.5, y:sh / 2, width:1, height:sh, lineAlpha: 0, fillAlpha: 0, density:0.0 } ); // Right _box2d.addBox( { x:sw + 0.5, y:sh / 2, width:1, height:sh, lineAlpha: 0, fillAlpha: 0, density:0.0 } ); } /** * Droidを作成します. * scaleはバグる */ private function createDroid(x:Number, y:Number, scale:Number = 1, color:uint = 0xA4CA39):void { _box2d.setDefault( { fillColor:color, lineAlpha:0, fillAlpha:1 } ); // 顔 mc = new MovieClip(); var g:Graphics = mc.graphics; g.beginFill(color); g.drawRoundRect(0, 60, 120 * scale, 120 * scale, 15, 15); g.beginFill(0xFFFFFF); g.drawRect(0, 62, 120 * scale, 5 * scale); g.drawCircle(32 * scale, 32 * scale, 4 * scale); g.drawCircle(88 * scale, 32 * scale, 4 * scale); addChild(mc); var head:QuickObject = _box2d.addCircle({ x: x, y: y, radius: 2 * scale }); var earLeft:QuickObject = _box2d.addBox({ x: x - 1.2 * scale, y: y - 1.8 * scale, width: 1 * scale, height: 0.2 * scale, angle: 1 }); var earRight:QuickObject = _box2d.addBox({ x: x + 1.2 * scale, y: y - 1.8 * scale, width: 1 * scale, height: 0.2 * scale, angle: -1 }); // 胴体を作る var bodyBox:QuickObject = _box2d.addBox({ x: x, y: y + 1.8 * scale, width: 4 * scale, height: 4 * scale, fillAlpha: 0 }); // 顔と体と耳(?)をひとまとめにする bodyGroup = _box2d.addGroup( { objects: [head, bodyBox, earLeft, earRight] } ); // 角を丸くするためのパラメーター var circleParamsA:Object = { x: x - 0.5 * scale, y: y - 1.0 * scale, radius: 0.5 * scale } var circleParamsB:Object = { x: x - 0.5 * scale, y: y + 1.0 * scale, radius: 0.5 * scale } // 左腕を作る var armLeft:QuickObject = _box2d.addBox({ x: x - 0.5 * scale, y: y * scale, height: 2.2 * scale }); var armLeftCircleA:QuickObject = _box2d.addCircle(circleParamsA); var armLeftCircleB:QuickObject = _box2d.addCircle(circleParamsB); var armLeftGroup:QuickObject = _box2d.addGroup( { x: 0.8 * scale, y: 4.2 * scale, objects: [armLeftCircleA, armLeft, armLeftCircleB] } ); // 胴体と繋げる _box2d.addJoint({ type: QuickBox2D.DISTANCE, a:armLeftGroup.body, b:bodyGroup.body, x1: armLeftCircleA.x + 0.8 * scale, x2: armLeftCircleA.x + 1.8 * scale, y1: armLeftCircleA.y + 4.2 * scale, y2: armLeftCircleA.y + 4.2 * scale }); // 右腕を作る var armRight:QuickObject = _box2d.addBox({ x: x - 0.5 * scale, y: y * scale, height: 2.2 * scale }); var armRightCircleA:QuickObject = _box2d.addCircle(circleParamsA); var armRightCircleB:QuickObject = _box2d.addCircle(circleParamsB); var armRightGroup:QuickObject = _box2d.addGroup( { x: 6.2 * scale, y: 4.2 * scale, objects: [armRightCircleA, armRight, armRightCircleB] } ); // 胴体と繋げる _box2d.addJoint({ type: QuickBox2D.DISTANCE, a:armRightGroup.body, b:bodyGroup.body, x1: armRightCircleA.x + 6.2 * scale, x2: armRightCircleA.x + 5.2 * scale, y1: armRightCircleA.y + 4.2 * scale, y2: armRightCircleA.y + 4.2 * scale }); // 左足を作る var legLeft:QuickObject = _box2d.addBox({ x: x - 0.5 * scale, y: y * scale, height: 1.8 * scale }); var legLeftCircleA:QuickObject = _box2d.addCircle({ x: x - 0.5 * scale, y: y + 0.8 * scale, radius: 0.5 * scale }); var legLeftGroup:QuickObject = _box2d.addGroup( { x: 2.5 * scale, y: 7 * scale, objects: [legLeftCircleA, legLeft] } ); // 胴体と繋げる _box2d.addJoint( { type: QuickBox2D.REVOLUTE, a: legLeftGroup.body, b: bodyGroup.body, x1: legLeft.x + 2.5 * scale, y1: legLeft.y + 6 * scale, x2: bodyGroup.x + 1 * scale, y2: legLeft.y + 6.4 * scale, collideConnected: false, enableLimit: true, lowerAngle: -1, upperAngle: 0.5 }); // 右足を作る var legRight:QuickObject = _box2d.addBox({ x: x - 0.5 * scale, y: y * scale, height: 1.8 * scale }); var legRightCircleA:QuickObject = _box2d.addCircle({ x: x - 0.5 * scale, y: y + 0.8 * scale, radius: 0.5 * scale }); var legRightGroup:QuickObject = _box2d.addGroup( { x: 4.5 * scale, y: 7 * scale, objects: [legRightCircleA, legRight] } ); // 胴体と繋げる _box2d.addJoint( { type: QuickBox2D.REVOLUTE, a: legRightGroup.body, b: bodyGroup.body, x1: legRight.x + 4.5 * scale, y1: legRight.y + 6 * scale, x2: bodyGroup.x + 3.5 * scale, y2: legRight.y + 6.4 * scale, collideConnected: false, enableLimit: true, lowerAngle: -0.5, upperAngle: 1 }); loop(); } } //} Code Fullscreen Preview Fullscreen Nice! by dontony70 at 2011/01/09 03:40:59 Thanks. by paq at 2011/01/09 16:44:57 足が丸いせいで、逆立ちのほうが安定するw by paq at 2011/01/09 21:22:24 douglasarts rinaldi masanof_BUSH.. kuroarizuka nyamogera OKASUKE sv_junic xor PePea_28 yabuchany NINECUBE linktale t_matsuda jozefchutka Albert civet merrycat daijimachine.. siouxcitizen.. djankey tjoen mousepancyo applicott osamX kacchan6 Kuchitama : Androidドロイド君 Mr.Star : Android Pelisalinet : Android Vemilyus : cool! Indyaner : bonedroidphysicragdollroboter easeindesign.. : var e:nice; undo : kawaii ProjectNya : Cute! cjcat2266 : Cute >w< matacat : めっちゃかわええ... clockmaker : Android宇宙を彷徨っているかのよう・・・ Android bone droid physic ragdoll roboter ドロイド君 height width type rotation parent graphics Object addEventListener Event.ENTER_FRAME addChild Math.PI Event uint Sprite Number sort new page view favorite forked pv71 forked from: Droid Tatiana.Castrillon forked:0 favorite:0lines:139 (diff:69) pv444 forked from: Droid Armando.Carreteros.Torres forked:1 favorite:4lines:192 (diff:1) pv1149 増やしてみた forked from: Droid paq forked:2 favorite:8lines:304 (diff:336) tag: Droid pv128 forked from: Droid cheol forked:0 favorite:0lines:192 (diff:1) pv0 forked from: Droid megu.018 forked:0 favorite:0lines:192 (diff:1) pv119 forked from: Droid andrew.sinning forked:0 favorite:1lines:192 (diff:1) pv99 forked from: Droid kiji forked:0 favorite:0lines:192 (diff:1) pv0 forked from: Droid akainu forked:0 favorite:0lines:192 (diff:1) 1 2NEXT