ノベルゲームをFLASH AS2で作りたい

このQ&Aのポイント
  • ノベルゲームをFLASH AS2で作りたいが、途中から画像を読み込む方法がわからない。
  • ノベルゲーム作成のためにAS2を使用し、文章を途中から読み込むことはできたが、画像の読み込み方法が不明。
  • ノベルゲームをFLASH AS2で作成中で、途中から画像を表示させる方法が分からない。助けてください。
回答を見る
  • ベストアンサー

ノベルゲームを FLASH AS2 で作りたいです

ノベルゲームを FLASH AS2 で作りたいです しかし、文章をクリックして表示することはできたのですが、「男が現れた」など画像を途中から読み込みたいです。 文章再生してる途中 myData[2] からフレームを跳んで、画像などを表示させたいのですが、どうすれば途中から跳んでくれるのかわかりません。 助けていただけていただけないでしょうか? アクションはこんな感じです。 var myData = new Array(); myData[0] = "…………………………。"; myData[1] = "こんにちは"; myData[2] ="男が現れた"; var spd = 40; var n = 0; var cnt = 0; myButton._visible = true; function myFunc() { cnt++; myField.text = myData[n].substr(0, cnt); updateAfterEvent(); if (cnt>=myData[n].length) { myButton._visible = true; clearInterval(myID); } } myID = setInterval(myFunc, spd); myButton.onRelease = function() { if (n<myData.length-1) { n++; } else { n = 0; } cnt = 0; myID = setInterval(myFunc, spd); myButton._visible = true; };

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

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

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

?疑問点が良くわかりませんが? 現状からだと 例えば次↓のようにすれば良いだけ(?)ではないでしょうか? ----------------------------------- //↓★このフレームで停止するものとする(仮) stop(); var myData = new Array(); myData[0] = "…………………………。"; myData[1] = "こんにちは"; myData[2] = "男が現れた"; var spd = 40; var n = 0; var cnt = 0; //どっちでも良いですが↓false? myButton._visible = false; function myFunc() { cnt++; myField.text = myData[n].substr(0, cnt); updateAfterEvent(); if (cnt >= myData[n].length) { myButton._visible = true; clearInterval(myID); } } myID = setInterval(myFunc, spd); myButton.onRelease = function() { if (n < myData.length - 1) { n++; } else { n = 0; } //↓★もしnが2であれば(仮) if (n == 2) { //↓★フレーム2に進めて停止(仮) gotoAndStop(2); } cnt = 0; myID = setInterval(myFunc, spd); //どっちでも良いですが↓false? myButton._visible = false; }; ----------------------------------- 変えた部分,というか付け足した本題部分は 「★」を付けた行だけです。 もちろん状況は「(仮)」のものです。 この「(仮)」状況例は無数にあり得ます。 例えば 「男が現れる」というアニメーションをムービークリップ内に用意しておいて, そのムービークリップを止めておいて,タイミングが来れば再生させても良いと思います。 また例えば 「男が現れる」というアニメーションをムービークリップ内に用意しておいて, そのライブラリのムービークリップシンボルに識別子を付けておいて, タイミングが来れば attachMovie でステージ上に呼びだしても良いと思います。 また例えば 「男が現れる」というアニメーションを外部SWFに用意しておいて, タイミングが来れば loadMovie で本編SWFにロード表示させても良いと思います。 などなどなどなど…。 スクリプトを書いた「(仮)」状況での画面↓

dedede4
質問者

お礼

返しが遅れてすみません すごくいい回答ありがとうございました!

関連するQ&A

  • AS3.0でクリック数に応じて配列の値を返したい…

    こんにちは、 AS3.0のド初心者です。 タイトルの通りのことをやってみたいのですが、うまくいきません。 var myArray:Array=["一度クリックされました","二度クリックされました","三度クリックされました","四度クリックされました"]; addEventListener(MouseEvent.MOUSE_DOWN,myFunc); function myFunc(e:Event):void{ var i:int=0; if(i<=myArray.length){ myArray_txt.text=myArray[i]; i++; } else{ nextFrame(); } } これを実行すると、一度クリックされましたと表示されて以降、テキストが変化しません。 ご教授のほどよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • JavaScriptの記述が長い

    ホームページビルダー11でJavaScriptものの記述がとても長くなっています。HPBが、ホームページビルダーの略だとは思われますが、 この中で削除しても影響のない記述はありますでしょうか? 多少でもサイトの読み込み速度を早くしたいと考えています。 宜しくお願いいたします。 /////////////////////////////////////////////////////////// <SCRIPT language="JavaScript"> <!--HPB_SCRIPT_ROV_50 function HpbImgPreload() { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var imgName = HpbImgPreload.arguments[0]; var cnt; swImg[imgName] = new Array; for (cnt = 1; cnt < HpbImgPreload.arguments.length; cnt++) { swImg[imgName][HpbImgPreload.arguments[cnt]] = new Image(); swImg[imgName][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt]; } } } } function HpbImgFind(doc, imgName) { for (var i=0; i < doc.layers.length; i++) { var img = doc.layers[i].document.images[imgName]; if (!img) img = HpbImgFind(doc.layers[i], imgName); if (img) return img; } return null; } function HpbImgSwap(imgName, imgSrc) { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var img = document.images[imgName]; if (!img) img = HpbImgFind(document, imgName); if (img) img.src = imgSrc; } } } var swImg; swImg=new Array; ここにはロールオーバー類記載 HpbImgPreload('_HPB_ROLLOVER2', 'banner/618-115.jpg', 'banner/618-115.jpg'); //--> </SCRIPT>

  • 文字を一文字づつ表示し、スクロールバーがしたまできたら、文字を表示する。

    質問させて下さい。 //トレーニングボタンを押したとき train.onRelease = function() { mydata_len = _level0.entry.length; i = 0; typeID = setInterval(function () { if (i<mydata_len) { i++; _root.my_txt.scroll++; my_txt.text = _level0.entry.substr(0, i); my_txt.setTextFormat( format ); } else { clearInterval(typeID); } }, 1); //テキストフィールドのscrollプロパティを監視 my_txt.onScroller = function() { if( this.scroll == this.maxscroll ) { _root.training._visible = false; _root.trainingend._visible =true; } else { _root.training._visible = true; _root.trainingend._visible =false; } } } テキストフィールドにタイプライター風に文字を一文字づつ表示させ、表示させている間は、表示中のダイナミックテキストをテキストフィールドの下に表示し、スクロールバーが一番したまできたら、表示終了のテキストに切り替わる、という事をしたいのですが、 文字を一文字づつ表示させている間も表示終了の文字が出てきてしまうのです。 文字を一文字づつ表示している間、スクロールバーが一番下にきたら、表示終了。それ以外は表示中、としたいのです。 文字を一文字づつ表示している間。という制約がなければできるのですが、文字の表示中だとうまくいきません。 もしよろしければ、お教えいただきたく思います。 私がつかっているのは、 WIN XP FLASH MX 2004 です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 移動位置が狂ってしまう

    いつもお世話になります。 「ボタンの有効と無効」及び「左右ボタンで方向切替」を合体させてアクションスクリプトを記述しました。ボタンが1個の時に、falseとtrueで有効・無効を教えていただきました。 次にボタンを2個とした場合、右ボタンを押し、即座に左ボタンを押すとやはり移動位置が狂ってしまいます。私にとっては行数が増え、どのように対処すればいいのかわかりません。 教えてください。 //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; //画像1枚の横幅を設定 var g_w:Number = 120; //画像の枚数を設定 var g_n:Number = 7; //カウンタ用変数 var cnt:Number = 0; //「L_btn」を非表示にしておく L_btn._visible = false; //「R_btn(→ボタン)」クリック時の動作を定義 R_btn.onRelease = function():Void { //もしカウンタが 画像の枚数-1 未満であれば (cnt<g_n-1) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-g_w, 3, true); //bt1のボタン機能を無効にする R_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする R_btn.enabled = true; } //L_btnを表示する L_btn._visible = true; //なおかつカウンタが 画像の枚数-2になれば if (cnt == g_n-2) { //R_btnを非表示にする R_btn._visible = false; } //カウンタに1を加算 cnt++; } } //L_btnクリック時の動作を定義 L_btn.onRelease = function():Void { //もしカウンタが 0 より大きい場合は if (cnt>0) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x+g_w, 3, true); //bt1のボタン機能を無効にする L_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする L_btn.enabled = true; } //R_btnを表示する R_btn._visible = true; //なおかつカウンタが 1 になれば if (cnt == 1) { //L_btnを非表示にする L_btn._visible = false; } //カウンタから1を減算 cnt--; } };

    • ベストアンサー
    • Flash
  • フラグについて

     javascript初心者です。  タイマー作成などで使われる、「フラグ」ですが、よくわかりません。 myButton = 0; function myCheck(myFlg){ if (myButton==0){ myStart=new Date(); myButton = 1; document.myForm.myFormButton.value = "Stop!"; myInterval=setInterval("myCheck(1)",1); }else{ if (myFlg==0){ myButton = 0; document.myForm.myFormButton.value = "Start"; clearInterval( myInterval ); }     ・     ・      ・   ・・・onclick="myCheck(0)"> なぜ、『myButton = 0;』のフラグと『myCheck(myFlg)』のフラグが2つ必要なのでしょうか?1つじゃできないんでしょうか? と、レベルの低い質問ですが、よろしくお願いいたします。

  • 一定時間ごとにカウント

    iを0として、一定時間たったらiを1プラスしたいのですが、 どのようにしたらいいかわかりません。 setIntervalを使って下記のとおり記述してみました。 var i = 0; function cnt(){ i++; } setInterval(cnt,1000); trace(i); しかし、iはいつまでたっても0のままです。 たとえば20秒ごとにiを1プラスしていくといった場合は、 どのように記述したらいいのでしょうか。 Flash CS3、WinXP、AS2.0です。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 100種類の画像をランダムに読み込みたい(AS2)

    現在下記のようなスクリプトを書いている状態なのですが、 ここからさらに100種類の画像をランダムに読み込み、表示できるようにしたいと思っています。 あと、すでにスライドはするようになってはいるのですが、たまに読み込みが間に合わず空白ができてしまいます。解決するにはスピードを遅くするしかないものなのでしょうか? 一応他の情報も記しておきます。 ・img フォルダ内に連番で100枚の画像ファイルを保存している ・リンク先はLink.asという名前で、そこに100種類のURLを記述している ・PC環境:CS5 AS2.0 Flash Player8 Mac環境 Flashの勉強しはじめたばかりで苦戦しております。 どなたかご教授のほどをよろしくお願いいたします。 import mx.transitions.Tween; import mx.transitions.easing.*; var num:Number = 10; var bar_h:Number = 200; var bar_w:Number = 150; var bar_n:Number = 10; var margin:Number = 0; var lag:Number = 1000; var speed:Number =1; var transMode:Boolean = true; for (i=1; i<=num; i++) { mc = this.createEmptyMovieClip("p"+i, i); mc.createEmptyMovieClip("inner",i); mc.inner.loadMovie("img/p"+i+".jpg"); mc._x = margin + (bar_w+margin)*(i-2); mc._y = 0; mc._alpha = 100; mc.n = i; mc.onRollOver = rollover; mc.onRollOut = rollout; mc.onRelease = releas; } function rollover() { this._alpha = 100; transMode = false; } function rollout() { this._alpha = 100; transMode = true; } function releas() { transMode = true; url = _root["link"+this.n]; getURL(url); } function bar_trans() { if (transMode) { for (i=1; i<=num; i++) { bar_mc = _root["p"+i]; bar_mc.x0 = bar_mc._x; if (bar_mc.x0>margin + (margin+bar_w)*(num-3 )) { bar_mc._visible = false; bar_mc.targetx = - bar_w; } else { bar_mc._visible = true; bar_mc.targetx = margin + bar_w + bar_mc.x0; } myTween(bar_mc); } } } ID = setInterval(bar_trans, lag); function myTween(bar_mc) { new Tween(bar_mc, "_x", Regular.easeOut, bar_mc.x0, bar_mc.targetx, speed, true); } #include "Links.as"

    • ベストアンサー
    • Flash
  • FLASHのAS2で作成をしました。外部jpg画像読み込みの部分が現状

    FLASHのAS2で作成をしました。外部jpg画像読み込みの部分が現状は写真8枚です。 状況により4枚になったりするのですが、どこをどのようにしたらいいのか分からないので、助けてください。 MAX=8を外部txtにできるのでしょうか?また、MAX=8をいろいろな数に対応出来るプログラムがありますか? よろしくです。 onClipEvent (load) { Max = 8; Sec = 3; Path = "photo/"; n = depth=cnt=0; function loadPic() { n++; if (n>Max) { n = 1; } depth++; mcName = "mc"+depth; this.attachMovie("pic", mcName, depth); this[mcName].loadMC.Loaded = false; this[mcName].loadMC.loadMovie(Path+"p"+n+".jpg"); if (depth>2) { this["mc"+(depth-2)].removeMovieClip(); } } loadPic(); } onClipEvent (enterFrame) { cnt++; if (cnt>Sec*4) { cnt = 0; loadPic(); } }

  • 「,」区切りについて・・・。

    以下のようなものを作りドリームウィーバーで使用しています。 (作り方は前回ここで教わりました。) <!-- function Format(int) { var res = ""; int = int + ""; for ( cnt = 1; cnt <= int.length; cnt++) { res = int.slice((int.length - cnt),(int.length - cnt + 1)) + res; if ( cnt/3 == Math.floor(cnt/3) ) { res = "," + res; } } return res; } a = (108000); // b = (1450); // d = a + (b * 8) + (2100 * 8); // 合計金額 document.writeln(Format(d)); // // --> 桁区切りの事を教えていただいたのですが、 これでは、dの値が100000になると ,100,000となってしまいます。 上位3桁に「,」が入らないように dの値の表示が100,000とたいのですが、 どなたか御教授お願いいたします。

  • Flash ActionScript 2.0でアドバイスをお願いいたし

    Flash ActionScript 2.0でアドバイスをお願いいたします。 下記のような記述で、外部フォルダ内の画像(連番のファイル名)を読み込み表示させています。画像枚数は変動しますのでこのような形にしました。 そこで問題なのが、リンク先の指定です。 XMLを読み込んでファイル名「1」の画像にはID「1」のURLがクリックしたら開くようにしたいのですが、どのように設定すればいいのかわかりません; 素人なもので、どのように記述すれば良いかご教授いただければ幸いです。 どうぞよろしくお願いいたします。 ----------------------------- var n = 0; var s = 0; _forcusrect = false; load_mc = createEmptyMovieClip("load_mc", -1); var mcLoader:MovieClipLoader = new MovieClipLoader(); var oListener = new Object(); function searchTotal() { s++; $jpg = "img_top/p"+s+".jpg"; mcLoader.loadClip($jpg, load_mc); load_mc._alpha = 0; oListener.onLoadError = function() { total = s; clearInterval(sID); n = 0; autoExchange(); }; mcLoader.addListener(oListener); } function p_load(n) { $jpg = "img_top/p"+n+".jpg"; mcLoader.loadClip($jpg, load_mc); p_direction(n); load_mc._x = 0; load_mc._y = 0; load_mc._alpha = 0; _root.onEnterFrame = function() { load_mc._alpha += (180-load_mc._alpha)/30; current_num.text = n; total_num.text = total-1; } } function autoExchange() { if (n>=total-1) { n = 1; p_load(n); } else { n++; p_load(n); } } sID = setInterval(searchTotal, 70); pID = setInterval(autoExchange, 4000); myComboBoxListener = new Object(); myComboBoxListener.change = function() { clearInterval(pID); if (flag!==1) { pID = setInterval(autoExchange, myCombo.value*1000); } }; myCombo.addEventListener("change", myComboBoxListener); ----------------------------------------- XML ----------------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <urllist>   <anchor id="1" url="http://www.yahoo.co.jp" target="_self" /> <anchor id="2" url="http://www.google.co.jp/" target="_self" /> <anchor id="3" url="http://www.goo.ne.jp/" target="_self" /> </urllist>

    • ベストアンサー
    • Flash