プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
actionscript 3.0 で作成しております。

A_positiveというmcを1秒ごとに
line_0のxの位置、line_1のxの位置,line_2のxの位置
と順に表示したいのですが、いきなりline_2のxの位置が
出てしまいます。

timerイベントなど、色々試したのですが、具体的に
下記のソースをどのようにソースを変えればいいのか
わからないので、お手数ですが教えて頂ければと思います。

何卒よろしくお願い致します。
/////////////////////////
function Click_start(evt)※クリックしたらスタート
{
var x=2;
for (atai = 0; atai<x; atai++ )
{
A_positive.x=Change_line(atai).x;
}
}
function Change_line(line)
{
var Return;
switch(line){
case 0:
    Return=line_0;
    break;
  case 1:
    Return=line_1;
    break;
case 2:
    Return=line_2;
    break;
}
return Return;
}
///////////////////////////

A 回答 (1件)

for文 で一気にループさせるからおかしくなるのではないでしょうか?


まずは「いつ」,「何をするのか」をちゃんと考えなければならないと思います。

次のような感じで
ご質問で書かれていらっしゃる日本語文のような感じに動きませんでしょうか。

------------------------------------------
//カウンタとなる変数 cntA を定義
var cntA:int = 0;

//A_positiveを動かす 関数「moveA」 を定義
function moveA(e):void {
//A_positive の x座標を line_○ の x座標 に移動
A_positive.x = this["line_" + cntA].x;
//もし cnt_A が 2 未満 であれば cnt_A に 1 を加算
//それ以外(2以上)であれば 0 に戻す
cntA = (cntA < 2) ? cntA+1 : 0;
}

//関数「moveA」を即実行
moveA(null);

//Timerインスタンス tmerA を作成(1秒間隔 , 無限回)
var tmerA:Timer = new Timer(1000,0);
//指定秒間隔で 関数「moveA」 を実行
tmerA.addEventListener(TimerEvent.TIMER, moveA);
//タイマースタート
tmerA.start();

//---↓勝手な付け加え↓---
//A_positive をクリックしたときも 関数「moveA」 を実行
A_positive.addEventListener(MouseEvent.CLICK,moveA);
------------------------------------------


Google検索「配列アクセス演算子」
http://www.google.co.jp/webhp?hl=ja#hl=ja&q=%E9% …

Google検索「ActionScript 三項演算子」
http://www.google.co.jp/webhp?hl=ja#hl=ja&q=Acti …
※上記スクリプトでは
  カウンタのアップに三項演算子を使っていますが
  これは使わず普通に if文 でも良いです。
    • good
    • 0

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