
No.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();
});
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
uwscでExcelに自動記入
-
パソコンのリカバリーについて
-
スマホでサイトの画像を長押し→...
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
Flashplayerの運用について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
AS3.0でボタン処理をまとめて書...
-
全国のイベント情報
-
インスタンスをまとめて生成?
-
アクションスクリプトを簡素化...
-
ソフトウェアキーボードを作るには
-
0.5秒 ボタンにマウスをあて続...
-
AS3.0で複数のButtonコンポーネ...
-
Flash as3.0版ソース ボタン...
-
AS2.0からAS3.0にうまく変換で...
-
エラー(型が一致しません。)...
-
c++ cmathとmath.h
-
LRESULTとHRESULT
-
VB6でユーザー定義型がNothing...
-
配列の要素番号を取得するには?
-
#define 文
-
TextChangeイベントが発生しない
-
VBでボタンを押すと画像をラン...
-
IDの自動採番について
-
PHPからFlashにXMLをそのまま渡...
-
このプログラムはどういう意味...
おすすめ情報