- ベストアンサー
ボタンによるシンボルの表示・非表示 as3.0
下記のスクリプトを3.0にする場合どう変更したら良いですか? on( press ) { //ボタンが押される度にtrue/falseを切り替える clip1._visible ^= 1; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 #1で書いたスクリプトにミス(ご質問との不一致)がありました。 遅ればせながら訂正します。 ご質問の元のイベントハンドラは on(press){~~} ですから 「ボタンを押した時」であって 「ボタンをクリックした時」ではありませんでしたね。 したがって#1で書いたスクリプトの1行目 btn1.addEventListener(MouseEvent.CLICK,changeClipVisible); の MouseEvent.CLICK を MouseEvent.MOUSE_DOWN にする必要がありました。 その部分を訂正した後の スクリプト例全文です↓。 //------------------------------------------ //「btn1」を押した時に 関数 changeClipVisible を実行 btn1.addEventListener(MouseEvent.MOUSE_DOWN,changeClipVisible); //関数 changeClipVisible の定義 function changeClipVisible(e:MouseEvent):void { //ボタンが押される度にtrue/falseを切り替える clip1.visible = !clip1.visible; } //------------------------------------------
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
とりあえずは ActionScript 1.0 を 3.0 に変更するという路線をやめた方が良いでしょう。 つまり 最初から ActionScript 3.0 で考えた方が早道です。 だいたい on(press){~~} などという onイベントハンドラ は ボタンやムービークリップインスタンスを選択を選択した状態でインスタンス自体に書くスクリプトですが ActionScript 3.0 では インスタンス自体 にはそもそも何も書けません。 (ムービークリップインスタンス内のタイムラインであればスクリプトは書けますが。) ですからスクリプトの変更どころで治まる話ではないのです。 まず「書く場所をどこにするのか?」を決める必要があります。 まず最初にすることは ボタン自体に書かれているその on(press){~~} は全部削除です。 他のインスタンス自体にも何か書かれていれば,それらもことごとく全消しです。 そうしないと ActionScript 3.0 ではエラーが出ます。 そうした上で パブリッシュ設定を ActionScript 3.0 にします。 そして, シーン 1 など メインタイムライン にそのボタンがあったとして そのメインタイムラインのフレームにスクリプトを書くのであれば まず メインタイムライン のステージ上にあるそのボタン(またはムービークリップ)にインスタンス名を付けて そのインスタンスをクリックしたときに何某の動作をするスクリプトを書く必要があります。 例えば,そのボタンに「btn1」というインスタンス名を付けたとします。 その場合のメインタイムラインのそのボタンが存在するフレームに書くスクリプト例です↓。 //------------------------------------------ //「btn1」クリック時に 関数 changeClipVisible を実行 btn1.addEventListener(MouseEvent.CLICK,changeClipVisible); //関数 changeClipVisible の定義 function changeClipVisible(e:MouseEvent):void { //ボタンが押される度にtrue/falseを切り替える clip1.visible = !clip1.visible; } //------------------------------------------
お礼
ありがとうございました。 勉強になりました。
お礼
すみません(^^;; お手間をお掛けしました。 ありがとうございました。