• 締切済み

ASファイルについて

関数などをまとめてasファイルにして読み込みたいとかんがえているのですが、可能なのでしょうか? たとえば レイヤー2にあるボタンオブジェクト"btn"をクリックすると レイヤー1で#include "function.as"としたなかの function hoge() { gotoAndStop(5); } とうい関数を実行したいっていうふうに考えいます。 btn.on(press) = hoge(); やってはみたのですが、Flash初心者でどうもうまくいきません。 どうかご教授ください。 よろしくお願いします。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

外部ファイル を include などする前に, フレーム1 に function hoge() { gotoAndStop(5); } btn.on(press) = hoge(); などと書いてもエラーがでるだけでしょう? また,フレームに function hoge() { gotoAndStop(5); } と書いてボタンに btn.on(press) = hoge(); と書いてもエラーが出るだけと思います。 外部ファイルなどを使う前に, 内部だけのスクリプトで動かせることが大切です。 また, 内部で function などを使用するよりも前に, function 抜きで動かせることが大切です。 ですから, そういう研究をする前にまず, onハンドラ や onハンドラメソッド などを使えるようにしたほうが良いです(すべきです)。 「onイベントハンドラ」 http://1art.jp/flash/le/lesson16/lesson16.htm 「ムービークリップのイベントハンドラ」 http://homepage3.nifty.com/ginga-b/MX/mc_eventhandler.html =================== FLA ファイルと同じフォルダに, 「function.as」というテキストファイルを用意し, そのデータ内容を書かれていらっしゃるとおり,次のようにしておきます。 function hoge() { gotoAndStop(5); } FLA の フレーム1 に, stop(); #include "function.as" と書いてボタンに, on (press) { hoge(); } と書いてパブリッシュすると, ちゃんと _root のフレームは 5 でストップしました。 わかりますか? 間違っているのは onハンドラ の書き方です。 つまり, on (press) { gotoAndStop(5); } これすらまともにできていないということです。 やってみる順を大きく間違えています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AS3.0 gotoAndStopを使いたい

    最近ASを始めた初心者です。 Flash AS3.0で画面遷移(フレーム移動)をカスタムクラスを用いて行いたいのですがうまくいきません。どうすればよいのかどなたか解る方教えてもらえないでしょうか。 よろしくお願いします。 flaファイル _______________________________________________________________________________ import Frame; stop(); //Aは移動するフレーム名 //aaaはボタンの名前 var Obj1:Frame = new Frame(aaa,"A"); _______________________________________________________________________________ asファイル _______________________________________________________________________________ package{ import flash.display.*; import flash.events.*; public class Frame{ var my_btn:SimpleButton; var my_Frame:String; public function Frame(btn:SimpleButton, Fr:String){ my_btn = btn; my_Frame = Fr; my_btn.addEventListener(MouseEvent.CLICK,go); } public function go(event:MouseEvent):void{ gotoAndStop(my_Frame); } } } ____________________________________________________________________________________

    • ベストアンサー
    • Flash
  • 関数を順番に実行したい AS3

    ムービークリップ(mc)の3つのフレームを順番に1秒づつAS3で表示させたい。 フレームレートは12fpsの場合、 関数 play1,play2,play3 の順番で12回ずつ実行すればよいのでは? と思いましたがどうしたら良いか教えてください。 (12fpsで1秒づつ表示したい、ループはしない) function play1(evt:Event):void { evt.target.gotoAndStop(1); } function play2(evt:Event):void { evt.target.gotoAndStop(2); } function play3(evt:Event):void { evt.target.gotoAndStop(3); }

    • ベストアンサー
    • Flash
  • flash AS2からAS3へ Rollover

    Flash AS2 のボタンに、下記を貼り付けていました。 on (Rollover) { stop(); GotoAndPlay(1); } これを、AS3では、どのように書き換えれば良いでしょうか?

  • ASファイルからのstage

    flashcs3 actionscript3.0で作成しています。 asファイル "Test.as" package { import flash.display.DisplayObjectContainer; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.*; public class Test extends Sprite { public function Test() { init(); } private function init() { for (var i:uint = 0; i<10; i++) { var sp:Sprite = new Sprite(); sp.graphics.beginFill(0x00CCFF); sp.graphics.drawRect(i*20,50,20,20); sp.graphics.endFill(); stage.addChild(sp); } } } } flash var hoge2 = new Test(); と書いてflash上のstage上にSpriteをaddChildしたいのですがstageをnullと解釈してしまいます。 この場合flash上のstageを参照するにはどうすれば良いのでしょうか?

    • ベストアンサー
    • Flash
  • FLASH/一定時間停止後、再生されるscript

    flash CS4/ActionScript3.0にてサイトローテーションバナーを制作しております。 ムービークリップ「btn1_mc」をクリックするとフラッグ「scene1」を再生し、 「btn1_mc」にポインタが乗った時は一定時間停止し、再生されるという動きを作りたいのですが、初心者のため、うまくActionScriptが書けません。 setTimeout関数を使えば良いということはわかったのですが… 下記コードに書き加え、実装する方法を教えていただければ助かります。 よろしくお願いします。 btn1_mc.addEventListener(MouseEvent.CLICK,btn1Click); btn1_mc.addEventListener(MouseEvent.ROLL_OVER,btn1Over); btn1_mc.addEventListener(MouseEvent.ROLL_OUT,btn1Out); btn1_mc.buttonMode=true; function btn1Click(evt:MouseEvent):void{ gotoAndPlay("scene1"); } function btn1Over(evt:MouseEvent):void{ gotoAndStop("scene1"); btn1_mc.gotoAndStop(2); } function btn1Out(evt:MouseEvent):void{ gotoAndPlay("60"); btn1_mc.gotoAndStop(1); }

  • フラッシュについてcs3とcs4から

    今フラッシュについて勉強しているのですが、CS4のアクションスクリプトをCS3で動かそうとして、1046型が見つからないというエラーが出ました。もしよろしければ直し方を教えていただけませんか。 プログラムは stop(); btn01,addEventListener(MouseEvent.CLICK,jump_10); function jump_10(event:MotionEvent):void { gotoAndStop("10"); }; btn02,addEventListener(MouseEvent.CLICK,jump_20); function jump_20(event:MotionEvent):void { gotoAndStop("20"); }; btn03,addEventListener(MouseEvent.CLICK,jump_30); function jump_30(event:MouseEvent):void { gotoAndStop("30"); }; です。足りないものがありましたらご指摘ください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • すべてのMCを1フレーム目へ

    ステージ上にMCのインスタンスが100個あるとします。 ボタンのクリックで全部のMCを1フレーム目へ移動させたいと思っています。 _root.EVENT_btn.onRelease = function() { _root.A_mc.gotoAndStop(1); _root.B_mc.gotoAndStop(1); _root.C_mc.gotoAndStop(1); _root.D_mc.gotoAndStop(1); : : } とひとつずつ書くしかないのでしょうか? ほかに効率のよい書き方はありますか? (注)すべてのインスタンスの親は同一オブジェクトではありません。

    • ベストアンサー
    • Flash
  • 【jquery】即時関数について

    知識のある方に教えて頂きたく、貴重なスペースをお借りいたします。 $(function(){ })と、即時関数の(function(){})();は 何が異なるのでしょうか。 よくグローバルオブジェクトの汚染を防ぐ為に 即時関数を使用すると記載がありますが、 通常JSを記載する際に使用する、DOM構築後に実行をする記述 $(function(){ })も、結局変数などをVar宣言すれば、 ローカル変数になるので、同じこと(グローバルの汚染を防げる) ではないかと思うのですが、間違っておりますでしょうか。 それだとすると、即時関数の使い道がわからないのですが、 ご教示頂けますでしょうか。 また、以下の(1)の記述方法だと、 「hoge」はグローバルオブジェクトとなってしまいますが、 (2)だとなりませんよね。 であれば、基本的には(2)のように関数は記載した方が良いのでは ないのでしょうか。結構(1)の書き方をしている方がいるので。 どなたかご教示いただければ幸いです。 よろしくお願いいたします。 ----------------------- (1) $(function(){ hoge(); }) function hoge(){ return true; } ----------------------- ----------------------- (2) $(function(){ hoge(); function hoge(){  return true; } }) -----------------------

  • AS3.0でボタン処理をまとめて書くには?

    はじめまして。当方、最近プログラム的なものを始めたばかりで困っています。 例えばルートにbtn0,btn1,btn2という3つのムービークリップを置いたとして、 ボタンを押したらそれぞれのムービークリップ名をトレースするには、 AS2.0以前ではルートのフレームアクションで for (var i=0;i<3;i++){  _root.["btn" + i].onRelease = function{   trace(this._name);  } } といった感じでforループでまとめられると思うのですが、 3.0ではどうしたらよいのか見当もつかず困っています。 for (var i=0; i<3; i++) {  ["btn"+i]addEventListener(MouseEvent.CLICK,over); } このようにまとめてリスナーに登録したとしても、 リスナー関数が別になってしまうので、this.nameは使えず…はて。といったところです。 なにとぞご教示よろしくお願い申し上げます。

    • ベストアンサー
    • Flash
  • ボタンとASが1フレーム目にないとエラーになるのは仕様ですか?

    CS4、AS3.0で作成しております。 クリックすると指定したシーンへ移動するスクリプトを作成しました。 ボタンが複数あるので、各ボタンにインスタンス名を入れてます。 //各ボタンが押されるのを監視 this.menu_btn.addEventListener(MouseEvent.CLICK,menu); this.shop_btn.addEventListener(MouseEvent.CLICK,shop); this.access_btn.addEventListener(MouseEvent.CLICK,access); //クリックされたとき、指定フレームまで移動 function menu(e:MouseEvent):void { this.gotoAndPlay(69); } function shop(e:MouseEvent):void { this.gotoAndPlay(75); } function access(e:MouseEvent):void { this.gotoAndPlay(78); } で、ボタンとASを1フレーム目に入れれば作動するのですが、両方とも2フレーム以降に持ってくるとエラーが出て作動しません。 「TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」と出ます。 ボタンの数を1つにしても同様でした。 プログレスバーを作るのに、2フレーム目に持ってきたいのですが、これはCS4の仕様かバグなのでしょうか? 回避する方法はありますでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Flash