簡単なサンプルが動かないのはなぜ?

このQ&Aのポイント
  • 超初心者が簡単なサンプルを動かせない理由を教えてください。
  • 簡単なサンプルのフレームアクションに止まらない問題があります。
  • VBAのソフト開発はできるが、サンプルが理解できない自己嫌悪になっています。
回答を見る
  • ベストアンサー

簡単なサンプルが動かないのはなぜ?

超初心者です。 自力でがんばろうと、いろんなBBSの過去記事を除きやってるのですが 動きません。 たとえば //timerObjオブジェクトの設定 timerObj = new Object(); timerObj.timeout = function() { clearInterval(timerID); // インターバルの終了 }; //計測開始(5秒でタイムアウト) var timerID = setInterval(timerObj, "timeout", 5000); このようなサンプルを見つけ5秒間待つアクションを ちゃんとフレームアクションに入れました でも希望のとおり動きません。 初めは「制御」メニューのシンプルアクションをONにするのを知らずに やっていましたが、今は分かっています。 STOP(); だけのフレームアクションは利いていますので。。。 ちなみに //timerObjオブジェクトの設定 timerObj = new Object(); timerObj.timeout = function() { clearInterval(timerID); // インターバルの終了 stop(); }; //計測開始(5秒でタイムアウト) var timerID = setInterval(timerObj, "timeout", 5000); こうやってstop();をつけてもそこではとまりません。 シンタックスのエラーもないということは 何か設定かがおかしいのかもしれません。 もちろんキーフレームになっています。 もうちんぷんかんぷんです。 どなたかお助けを・・・・ VBAのソフト開発などはそれなりにしています。 なんでこんなこともわからんのか自己嫌悪になっております。

  • Flash
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

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

ActionScript の大半 99%以上 は, Flash オーサリングツール上では動作しませんよ。 動作するのは極々シンプルなもので, stop() とか gotoAndPlay() などのタイムライン制御と, onイベントハンドラくらいだと思います。 つまりタイムラインアニメーションの再生ヘッドの操作くらいです。 でないと逆に色々困りますよ。 作ってもないムービーリップが続々とステージ上に出没してしまったり, 勝手にムービークリップが変形したり色が変わったりしてしまう可能性も出てきてしまいます。 ActionScript は Flash オーサリングツール上ではなく, SWF にパブリッシュしたときに動作する言語です。 したがって普通,AS動作確認は, 「制御」→「ムービープレビュー」や 「制御」→「シーンプレビュー」でします。 > VBAのソフト開発などはそれなりにしています。 それが逆にまずいのかもしれません。 Excel の XLS や, Word の DOC はそれ自体が編集用ファイルであり閲覧用ファイルです。 Flash は FLA が編集用ファイルで,SWF が閲覧用ファイルです。 ActionScript は閲覧用 SWF 内で動作するものです。 それも パブリッシュする SWF のバージョンによって, 使えるスクリプト使えないスクリプトが色々あります。 ちなみに関係ありませんが, FLA 上で動作するオーサリング用言語は ActionScript ではなく, JSFL と言います。

p_boss2007
質問者

お礼

そういうことだったのですね。 上のコードは動きませんでしたが ちゃんとしたコードはBlurFiltanさんの言うとおりでした。 とても勉強になりました。 これからがんばります。

関連するQ&A

  • 数秒後に別フレームにとばす方法

    1フレーム目で画像を読み込み10秒表示させた後に2フレーム目でまた10秒表示させるといった事を試しています。 表示させる画像はムービークリップで最後の1秒でフェードアウトさせるようにしているのですが 完全にフェードアウトする前に2フレーム目に飛んでしまいます。 何か解決方法はないのでしょうか?? 1フレーム目 ---------------------------------------------------------- this.stop(); timerID = setInterval(startMovie, 10000); function startMovie() { clearInterval(timerID); gotoAndStop(2); } 2フレーム目 ---------------------------------------------------------- this.stop(); timerID = setInterval(startMovie, 10000); function startMovie() { clearInterval(timerID); gotoAndStop(1); } ちなみにgotoAndStop();を消すとそのフレームでループしますが完全にフェードアウトしてくれます…。

    • ベストアンサー
    • Flash
  • clearIntervalの記述方法について

    よろしくお願い致します。 jQueryにて「setInterval」を使用して、オープニングムービー(?)のようなものを作りたいと思い、見よう見まねで下記のようなコードを作りました。 取りあえず動作するようになったのですが、繰り返し動作を止めるための「clearInterval」の使い方が分かりません。 この場合、どのようにコードを記述すればよいのでしょうか? お手数ですが、どうぞご教授下さいますようお願い致します。 $(document).ready(function(){ $("#A").fadeTo(0,0); $("#B").fadeTo(0,0); $("#C").fadeTo(0,0); var timerId1 = setInterval(function(){ $("#A").fadeTo(1000,1); var timerId2 = setInterval(function(){ $("#B").fadeTo(1000,1); var timerId3 = setInterval(function(){ $("#C").fadeTo(1000,1); }, 1000); }, 1000); }, 1000); });

  • 一定時間が経過した後のフレーム移動について

    Flash初心者です。うまく質問したいことが伝わるか心配ですが、どうぞ宜しくお願いします。 タブメニュー型のムービーを作成していまして、10秒経過すると次のタブが開き、 また10秒すると次のタブが開く…。このループです。 タブの数は4つ。1フレームごとにそれぞれのタブが開いているように画像で見せておいて(計4フレームを使用)、 スクリプトで10秒の間隔をおき、次のフレームに移動させる仕組みになっています。 タブにはクリックできるようにボタンが仕込んであり、クリックするとムービーの流れ(再生されている順)に関係なく、 そのタブに移動します(2つ目のタブなら2フレーム目を再生)。 (タブの部分のテキスト、タブが開いたときに表示されるバナー画像は外部読み込みになっています。 ただ、この外部読み込みに関しては質問の内容に影響しないと思いますので詳しくは説明しないでおきます。) スクリプトは下記のとおりです。(注:教えて!gooにあったものを使わせていただきました。) ※1フレーム目 --------------------------------------------------------------------- this.stop(); timerID = setInterval(startMovie, 10000); function startMovie() { gotoAndPlay(2); clearInterval(timerID); } ※2フレーム目 --------------------------------------------------------------------- this.stop(); timerID2 = setInterval(startMovie2, 10000); function startMovie2() { gotoAndPlay(3); clearInterval(timerID2); } ※3フレーム目 --------------------------------------------------------------------- this.stop(); timerID3 = setInterval(startMovie3, 10000); function startMovie3() { gotoAndPlay(4); clearInterval(timerID3); } ※4フレーム目 --------------------------------------------------------------------- this.stop(); timerID4 = setInterval(startMovie4, 10000); function startMovie4() { gotoAndPlay(1); clearInterval(timerID4); } これでちゃんと10秒経過すると次のフレームに移動し、それがループされるのですが 問題は、途中で順に再生されているタブと違うタブをクリックしたときに起こります。 一度、その再生順がクリックすることによって変わってしまうと、元々の『10秒後に次のフレームへの移動』の動きと、 クリックされたタブから『10秒後に次のフレームへの移動』の動きが重複しているようなんです。 ちゃんと確認できたわけではありませんが、複数回これを繰り返すと4つのタブがかなりの速度でパッパッパと遷移し、 まともに見ることすらできないものになってしまいます。 解決したいのは、クリックしたタブ(移動したフレーム)から新たに10秒がカウントされ、10秒後には次のフレームに移動し 10秒経過する前に他のタブをクリックしたときでも、そのタブ(フレーム)に移動してからまた新たに10秒がカウントされる…。 このようにするにはどうしたらいいでしょうか? どうぞご教示ください。

  • スライドの表示とアクションスクリプトの関連

    こんにちわ。 現在、プレゼン風のスライドを作成しております。 親スライドがあり、その下に子スライドを数個作成しております。また、その子スライドにアクションを配置した仕様にしております。 また、アクションは、以前にこちらのサイトで教えていただきました、時間指定のアクションなのですが、子スライド2が表示されて数秒後に子スライド2内の指定のフレームに移動するアクションスクリプトを記述しています。というか、そういう風にしたいと想っています。 親スライド   |   子スライド1ー静止画   |   子スライド2-時間指定のスクリプト this.stop(); timerID = setInterval(startMovie, 28000); timerID2 = setInterval(startMovie2, 31000); function startMovie() { gotoAndPlay(5); clearInterval(timerID); } function startMovie2() { gotoAndPlay(10); clearInterval(timerID2); } 上記スクリプトは、子スライド2内の1フレーム目に記述しています。 また、各スライドの切り替えは、mediaDisplayのパラメーターで映像に合わせて、時間指定で切り替えています。 上記、スクリプトは稼動するのですが、スライド2が表示されてからではなく、全体が再生されてからの時間で動いてしまいます。 ですので、スライド1が表示されている裏でスライド2のアクションが動いてる感じです。 スライド2が表示されてから、アクションスクリプトが動くようになるには、どういう風に指定すればよいのでしょうか? ほかのとこでも聞いたのですが、ちょっと利き方が悪いのか、お返事がなくて。。。

  • 画像がフェードイン・アウトするクラスの作り方教えて..

    前置き:別に困っているわけでもありません ・こんな質問許されないかも(ご容赦を) ・自分で勉強しろと言われるかも(ごもっとも) ・ごみプログラムがさらにごみプログラムを生んでいるかも(ごめんなさい) 本題: いつぞやのタイトルくるくるのサンプルを基に、画像がフェードイン、 フェードアウトするオブジェクト指向っぽいスクリプトを作りました。 下のソースです。スタイル属性の変更をwindow.setIntervalを使って counter値に達するまでループ実行しているだけです。 似たような処理のfadeinクラスとfadeoutクラスを作って、  fadein.start(ターゲット,インターバルミリ秒);  fadeout.start(ターゲット,インターバルミリ秒); でフェードイン、フェードアウトを開始していますが、 fadeinクラスとfadeoutクラスをfadeinoutクラス一つにまとめちゃって、 fadeinoutクラスのメソッド(?)としてfadein、fadeoutを使えるように するには、どうやって作ればよいのかと言うのが質問です。 本当は、  var myobj = new fadeinout(ターゲット,インターバルミリ秒); とインスタンスして  myobj.fadein;  myobj.fadeout; みたく使うためのコーディングがよくわからんのです。 抜本的に書き換えた方がよいのでしょうか... <作ったサンプル> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>FadeIn/FadeOut</title> <style type="text/css"></style> <script type="text/javascript" charset="utf-8"> <!-- var fadein = function (node,interval){ this.counter = 0; this.target = node; this.interval = interval; this.timerId = setInterval((function(that){ return function(){that.loop();}; })(this),this.interval); this.stop = function () { this.timerId && clearInterval(this.timerId); this.timerId = null; }; this.loop = function(){ this.target.style.width=this.counter+"px"; this.target.style.height=this.counter+"px"; this.target.style.opacity = this.counter / 100; this.target.style.filter = "alpha(opacity=" + this.counter + ")"; if( ++this.counter>100) this.stop(); }; }; var fadeout = function (node,interval){ this.counter = 100; this.target = node; this.interval = interval; this.timerId = setInterval((function(that){ return function(){that.loop();}; })(this),this.interval); this.stop = function () { this.timerId && clearInterval(this.timerId); this.timerId = null; }; this.loop = function(){ this.target.style.width=this.counter+"px"; this.target.style.height=this.counter+"px"; this.target.style.opacity = this.counter / 100; this.target.style.filter = "alpha(opacity=" + this.counter + ")"; if( --this.counter<0) this.stop(); }; }; fadein.start = function(target,interval){ new fadein(target,interval ); } fadeout.start = function(target,interval){ new fadeout(target,interval ); } function fadein_s(){ var target=document.getElementById("target"); fadein.start(target,1); } function fadeout_s(){ var target=document.getElementById("target"); fadeout.start(target,1); } // --> </script> </head> <body> <div> <image id="target" src="image/yahagi.png" style="width:0px;height:0px;"> </div> <button onclick="fadein_s();">フェードイン</button> <button onclick="fadeout_s();">フェードアウト</button> </body> </html>

  • AJAX(?)TimeOutエラーが停止しない

    当方、Javascriptで本格的なプログラムを組んだことが無いプログラマです。 書籍を参考にAJAXを使用したインターフェースを構築しているのですが、時折タイムアウトエラーが止まらず出続ける現象に遭遇して困っております。 原因・回避方法などがわかりましたらご教授ください。 httpRequestのアクセス部分のソースは以下のようになっています(見づらくてすみません)。 function httpPostRequest(target_url, post_data, funcitonReference) { ~~(XMLHttpRequestオブジェクト検証部分)~~ timerId = setInterval('timeoutCheck()', 1000); httpObj.open("POST", target_url, true); httpObj.onreadystatechange = function() { if (httpObj.readyState == 4) { clearInterval(timerId); if (httpObj.status == 200) { funcitonReference(httpObj.responseText); } else { alert(httpObj.status + ' : ' + httpObj.statusText); funcitonReference(false); } } } httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); httpObj.send(post_data); } function httpObjGenerateFail() { alert('This browser is outside the support.'); return false; } function timeoutCheck() { timeout_sec --; if(timeout_sec <= 0) { clearInterval(timerId); timeout_sec = 10; httpObj.abort(); alert('Time out'); return false; } }

  • ロールオーバーするとラベルにジャンプし、ロールアウトするまでストップ

    ボタンAとボタンBの2つがありまして、 ボタンAにロールオーバーすると、指定したラベルにジャンプし、ボタンAの位置にボタンBがきます。 オーバー後少し進み、ロールアウトするまでストップしたいのですが、どうすれば良いのでしょうか? ボタンAには ──────────────────── on (rollOver) { gotoAndPlay("ボタンBの所のラベル"); } ──────────────────── と書いてあり、ロールオーバー時にきちんとラベルにジャンプしてくれます。 ボタンBには、 『 buttonB 』と名前を付け ──────────────────── on (release) { getURL("http://www.URL"); } ──────────────────── と記載してあり、別ページに飛ばしております。 該当のラベルまでジャンプした後、10フレームくらい進んだフレームにActionScriptをかけておりまして、 ──────────────────── stop(); clearInterval(stopID); var mov_stop = 4000; stopID = setInterval(function () { play(); clearInterval(stopID); }, mov_stop); } ──────────────────── となっており、ここのフレームでロールアウトするまでストップさせたいのですが、どうすればいいのか分からず困っております。 分かり難い文章で申し訳ないのですが、どなたか詳しい方ご掲示お願い致します。

    • ベストアンサー
    • Flash
  • jQuery pngアニメを同ページ内に複数配置

    よろしくお願いいたします。 http://blog.rettuce.com/animation/animation-jpg/ こちらを参考に、jquery+png画像でgifアニメのようなアニメーションを作成しています。 サンプルの通りに作成すると問題なくアニメーションになっているのですが、 同じページ内に複数の異なるアニメーションを配置すると、うまく表示できず、おかしな動作になります。 javascriptは以下のように記述しています。 //アニメーション1 <script type="text/javascript">var id = "test1"; var width = 50; var height = 50; var fps = 10; var src = "test1.png"; var frame = 0; var max_frame = 10; var onceFlg = false; $(document).ready( function (){ $("#"+id).css({ "background":"url("+src+")", "width":width, "height":height }); var interval = 1/fps*1000; animation = setInterval(intervalEvent, interval); }); function intervalEvent(){ $("#"+id).css({ "background-position":"0 "+ -height * frame +"px"}); frame++; if(frame>=max_frame){ if(onceFlg) clearInterval( animation ); frame = 0; }; } </script> //アニメーション2 <script type="text/javascript"> var id2 = "test2"; var width = 500; var height = 300; var fps2 = 5; var src2 = "test2.png"; var frame2 = 0; var max_frame2 = 5; var onceFlg2 = false; $(document).ready(function (){ $("#"+id2).css({ "background":"url("+src2+")", "width":width, "height":height }); var interval2 = 1/fps2*1000; animation2 = setInterval(intervalEvent2, interval2); }); function intervalEvent2(){ $("#"+id2).css({"background-position":"0 "+ -height * frame2 +"px"}); frame2++; if(frame2>=max_frame2){ if(onceFlg2) clearInterval( animation2 ); frame2 = 0; }; } </script> ------- それぞれ、一つずつ記述したときは、どちらも想い通りに動くのですが、 両方記述した際に、以下の2点のようになります。 1.アニメーション1が23×23個表示される  ■ ←これをアニメーションだとすると、 ■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■     ・     ・     ・ という風に表示されます。 2.上記のjavascriptの記述のアニメーション1とアニメーション2の順序を入れ替えると、  アニメーション1は正しく表示され、アニメーション2が表示されなくなります。。 それぞれ個別では動いているので、複数配置するときのjavascriptの書き方が間違っているのかと思うのですが、 原因をもしご存知でしたらお教えいただきたいと思い、質問させていただきました。 どうぞよろしくお願いいたします。

  • jsのスライドショーのボタンの時間制御について

    jsのスライドショーについて質問です。 メイン画像とサムネール画像が連動していて、5秒間で次の画像及びサムネールに自動的にスライドするというものを作りました。そして、Prevボタンやnextボタンをつけ、クリックと、手動で次のスライドに移るようにしました。 これに、切り替わったスライドから5秒間止まり次の画像に切り替わるという設定を加えたいのですが、うまくいきません。自動再生中の4秒後にボタンをクリックすると、次のスライドが1秒で、また次のスライドに切り替わってしまうのです。 どうか方法を教えてください。 <スクリプト> //自動再生 var timerID = setInterval(function(){ $('#thumbsNext').click(); },5000); $('#gallery ul').hover(function(){ clearInterval(timerID); }, function(){ timerID = setInterval(show, 5000); // マウスアウト時にスライドショーを再開 }); function show(){ $('#thumbsInner').animate({ marginLeft:parseInt($('#thumbsInner').css('margin-left'))-248+'px' },'slow','swing', function(){ $('#thumbsInner').css('margin-left','-248px'); $('#thumbsInner ul li:first').appendTo('#thumbsInner ul'); $('#thumbsList .active').next().click(); }); }

  • サムネイルで画像を切り替えるjQuery

    下記サイトを参考にサムネイルで画像を切り替えるjQueryを作成しました。 http://tam-tam.co.jp/tipsnote/javascript/post3351.html 自動で切り替えしないようにスクリプトを一部修正して下記を設置しています。 chromeなどでは問題なくスムーズに切り替わるのですが、 firefoxでは、メイン画像とサムネイルが切り替わる際に (フェードイン・フェードアウトの時) 背景が黒くなってしまいます。 また少し動作が不安定に感じます。 背景は白のままで、出来れば動作も改善させたいのですが、 原因が分からず困っています。 どなたか参考サイトのサンプルで原因が分かる方がおられましたら ご教授いただけないでしょうか。 どうぞ宜しくお願い致します。 $(function (){ //設定 var active="active",interval=6000; var index=0, timerId=null; var tabs=$("#thumbBtn > li"), content=$("#view > p"), cap=$("#caption > li"); //クラスの付与 tabs.each(function(){$(this).removeClass(active);}); content.hide(); cap.hide(); tabs.eq(0).addClass(active); content.eq(0).fadeIn("fast"); cap.eq(0).fadeIn("fast"); //クリックされたらactiveというクラスを付与、 //切り替え、タイマーをリセット tabs.click(function(){ if($(this).hasClass("active")) return; if(timerId) clearInterval(timerId),timerId=null; change(tabs.index(this)); setTimer(); return false; }); //タイマー // setTimer(); // function setTimer(){ // timerId=setTimeout(timeProcess,interval); // return false; // } function timeProcess(){ change((index+1)%tabs.length); timerId=setTimeout(arguments.callee,interval); } //切り替え function change(t_index){ tabs.eq(index).removeClass(active); tabs.eq(t_index).addClass(active); //fadeout setTimeout(function(){ content.eq(index).stop(true, true).fadeOut(3000), cap.eq(index).stop(true, true).hide() ;}, 300); //fadein setTimeout(function(){ index=t_index; content.eq(index).fadeIn(3000), cap.eq(index).fadeIn(3000) ;}, 400) } });

専門家に質問してみよう