アプリ版:「スタンプのみでお礼する」機能のリリースについて

お願いしますADEBE FRASH C55を使 います。 アクションスクリプトを教えてもらい たいです。 音ゲームを開発します。 基本的な動作は 画面右から左に向かってマーク(シン ボルが)3つの譜面合わせて流れてく る イメージは太鼓の達人の譜面が3つに 分かれるかんじです。 そしてそのマークを 画面左であたり判定 E D C のキーボードで判定をつけたいのです がASを教えていただけませんか?

ーーーeーーーーーーーー←○ーー ーーーdーーーーーーーー←○ーー ーーーcーーーーーーーー←○ーー
こんなかんじです

A 回答 (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();
});
    • good
    • 0

>ADEBE FRASH C55を使います。


adobe flash c55の間違いでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!