- ベストアンサー
お願いします
お願いしますADEBE FRASH C55を使 います。 アクションスクリプトを教えてもらい たいです。 音ゲームを開発します。 基本的な動作は 画面右から左に向かってマーク(シン ボルが)3つの譜面合わせて流れてく る イメージは太鼓の達人の譜面が3つに 分かれるかんじです。 そしてそのマークを 画面左であたり判定 E D C のキーボードで判定をつけたいのです がASを教えていただけませんか? ーーーeーーーーーーーー←○ーー ーーーdーーーーーーーー←○ーー ーーーcーーーーーーーー←○ーー こんなかんじです
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
譜面は1つしかありませんが、こんな感じですかね。 1フレーム目に下記のコードをコピペすれば動くと思います。 Eキーをタイミングよく押すとあたり判定が走ります。 内容はソースを読めば、すぐにわかると思います。 import flash.events.Event; import flash.display.Sprite; import flash.display.Graphics; import flash.display.MovieClip; import flash.display.DisplayObjectContainer; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.display.StageAlign; import flash.display.StageScaleMode; stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; graphics.lineStyle(1, 0xffffff, 0.6); graphics.moveTo(0, stage.stageHeight * 0.5); graphics.lineTo(stage.stageWidth, stage.stageHeight*0.5); var markList:Array = []; const speedX:Number = -5; var interval:int = 50; var count:Number = 0; var hitMC:MovieClip = createHitArea(); addChild(hitMC); function _onKeyDown(e:KeyboardEvent):void { if (e.keyCode == Keyboard.E) { hitMcScale(); checkHitMark(); } } function checkHitMark():void { for (var i:int = 0; i < markList.length; i++) { if (hitMC.hitTestObject(markList[i])) { markList[i].hit(); break; } } } function hitMcScale(s:Number = 1.4):void { hitMC.scaleX = hitMC.scaleY = s; } function createHitArea():MovieClip { var mc:MovieClip = new MovieClip(); var g:Graphics = mc.graphics; g.beginFill(0x00ffaa); g.drawCircle(0, 0, 40); g.endFill(); mc.x = 50; mc.y = stage.stageHeight*0.5; return mc; } function update():void { count ++; if (count%interval == 0) { var mark:MovieClip = createMark(); mark.position(stage.stageWidth, stage.stageHeight*0.5) .appendTo(this); markList.push(mark); } for (var i:int = 0; i < markList.length; i++) { if (markList[i].isKilled) { markList.splice(markList.indexOf(markList[i]), 1); continue; } markList[i].update(); } if (hitMC.scaleX > 1) { hitMC.scaleX -= 0.05; hitMC.scaleY -= 0.05; } else { hitMC.scaleX = hitMC.scaleY = 1; } } function createMark():MovieClip { var sp:MovieClip = new MovieClip; var _speedX:Number = speedX; var _speedY:Number = 0; var g:Graphics = sp.graphics; g.beginFill(0xffffff*Math.random()); g.drawCircle(0, 0, 30); g.endFill(); sp.cacheAsBitmap = true; sp.update = function():void { this.x += _speedX; this.y += _speedY; if (this.x < -this.width - 30 || this.y > stage.stageHeight+100 || this.y < -100) { this.kill(); } }; sp.position = function (x:int, y:int):MovieClip { sp.x = x; sp.y = y; return this; } sp.appendTo = function (d:DisplayObjectContainer):MovieClip { d.addChild(sp); return this; } sp.kill = function ():void { sp.isKilled = true; sp.parent.removeChild(this); } sp.hit = function():void { _speedX = 20; _speedY = Math.random()*30-15; } return sp; } stage.addEventListener(KeyboardEvent.KEY_DOWN, _onKeyDown); addEventListener(Event.ENTER_FRAME, function(e:Event):void{ update(); });
その他の回答 (1)
- fujisawa111222
- ベストアンサー率0% (0/1)
>ADEBE FRASH C55を使います。 adobe flash c55の間違いでしょうか?