電子書籍の厳選無料作品が豊富!

Suzukaというソフトを使ってFLASHを勉強しています。

タイムライン上にアクションレイヤーで
n = 10 ;
として 変数n に10を代入しました。

次に スプライトAでボタンを作って、以下のように記述しました。
on(Press){
n = n - 1;
}
私の中では、任意のタイミングでこのボタンを押して、
変数nの値から-1するつもりだったのですが
変数nの値が変わりません。



任意のタイミングでボタンを押して変数nに変化を与えるにはどうしたら良いのでしょうか?

今は以下のようにして変数を-1しています。
//////////////////////////////////////////////////////////
スプライトAに
on(Press){
_root . スプライトB. gotoAndPlay(2);
}
を記述。

スプライトBのタイムライン2フレーム目に
n = n - 1;
を記述。

(一旦別のスプライトBを用意して
そのスプライトBの中のタイムラインに設定したアクションレイヤーに
n = n - 1;
を踏ませています。
//////////////////////////////////////////////////////////
しかしこの方法だと、タイミングが2フレームずれてしまい
厳密にはPressした瞬間ではなくなってしまいますよね。


これ以外にon(Press)などで変数を変える事はできないんでしょうか?

お詳しい方いらっしゃいましたら、ご教授宜しくお願いいたします。

A 回答 (1件)

おそらくこの点↓が問題でしょう。



> 次に スプライトAでボタンを作って、以下のように記述しました。

Suzuka や Parafla! の スプライト というものは
Adobe (Macromedia) Flash で言うところの ムービークリップ(MovieClip) なんです。
で、
そのムービークリップというのはムービーの中のムービーであって「階層」を持つんです。

「ターゲットパス」
http://homepage3.nifty.com/ginga-b/MX/targetpath …

「Suzuka 基礎・基本 ★ ターゲットパス(&階層)」
http://suzupara.iinaa.net/kiso_target.html


ボタン と スプライト とは、階層を持つ持たないが大きな違いです。
(ボタン=階層を持たない ・ スプライト=階層を持つ)

> タイムライン上にアクションレイヤーで
> n = 10 ;
> として 変数n に10を代入しました。

おそらくこの タイムライン上 とは メインのタイムライン,
ActionScript的に言えば _root のタイムラインだと考えられます。

一方

> on(Press){
> n = n - 1;
> }

と書かれたのは スプライトA ですから
つまり スプライトA の中の変数 n から -1 をしようとしているということになります。
階層図で表すと次のようになります。

 _root ← n=10
   └スプライトA ←nから1を引く

したがって、
_root の変数 n の値を -1 したい場合は、
スプライトAに書くスクリプトを


on(press){
_root.n = _root.n - 1;
}

または

on(press){
_root.n -= 1;
}

または

on(press){
_root.n--;
}


もしくは

on(press){
_parent.n = _parent.n - 1;
}

または

on(press){
_parent.n -= 1;
}

または

on(press){
_parent.n--;
}


もしくは

on(press){
this._parent.n = this._parent.n - 1;
}

または

on(press){
this._parent.n -= 1;
}

または

on(press){
this._parent.n--;
}

のように書く必要があります。


============

なお
on(release) や on(press) など onハンドラ の () 内の最初の文字は小文字です。

Flash Player 7 以上(SWF7 以上)用の SWF では
大文字小文字が厳格に区別されますから
大文字小文字を間違えると正常に動作しない現象が発生するおそれがあります。
    • good
    • 0
この回答へのお礼

レス感謝します。

ご指導頂きましたとおり、
ターゲットパスの指定により間違いをしていたようです。

改めてスクリプトを書き直して見た所、
私が希望した通りの動きをしてくれました。

当方まだASを作る基礎が出来て無いため、初歩的な部分で質問申し訳ありませんでした。
BlurFiltan様には過去にも何度も初歩的な質問にも関わらず、ご教授頂き大変感謝しております。
ありがとうございました<(__)>

お礼日時:2010/12/17 20:51

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