JPGをSWFに変更する方法

このQ&Aのポイント
  • actionscript1.0でJPGを読み込んでるところをSWFに変更する方法はありますか?
  • また、actionscript1.0でJPGを読み込んでいる箇所をAS3.0に変更することも考えています。
  • 具体的な手順や参考になる情報があれば教えていただきたいです。
回答を見る
  • ベストアンサー

actionscript1.0でJPGを読み込んでるところをSWFに、

actionscript1.0でJPGを読み込んでるところをSWFに、、、 初心者のため良く分からないため質問いたします。 FLAを開くと設定はFlashのactionscript1.0 パブリッシュ設定がFlash Player8.0でした。 現在上記設定で下記scriptが書かれているものをFlashCS4で開いています。 そして現在3つのJPGを読み込んでいるのですが、そこをSWFに変更したいと考えています。 現在はAS1.0ですが、これを機会にAS3.0に変えたいとも考えています。 どう調べていいか分からないので質問させていただきました。 質問自体よく分からないかもしれませんが、非常に困っています。 よろしくお願いいたします。 onClipEvent (load) { Pass = "img_top_flash/"; Timer = _root.Sec*30; cnt = 0; this._y = 300; //元はthis._y = -20; this.loadVariables( Pass + "top_flash_url.txt"); function loadJPG() { _root.Loaded = false; cnt = 0; if (num == Max) { num = 0; } else if (num<0) { num = Max-1; } depth++; if (depth>1) { _root.mc["m"+(depth-2)].removeMovieClip(); } navi.slider._alpha = 100; mcName = "m"+depth; _root.mc.attachMovie("pic",mcName,depth); _root.mc[mcName].fileName = Pass+picArray[num]+".jpg"; for (i = 0; i < Max; i++) { if (i == num) { navi.mc["b"+i].gotoAndStop(2); } else { navi.mc["b"+i].gotoAndStop(1); } } } } onClipEvent (data) { picArray = files.split(","); Max = picArray.length; for (i = 0; i < Max; i++) { mcName = "b"+i; navi.mc.attachMovie("navi_btn",mcName,i); navi.mc[mcName].num = i; navi.mc[mcName]._x = i*20; } navi.mc.attachMovie("sankaku","sankaku",Max); navi.mc.sankaku._x = Max*20; num = depth = 0; loadJPG(); } onClipEvent (enterFrame) { if (Max>1 && _root.Loaded) { //this._y -= this._y/4; this._y -= this._y/100; if ( this._y <= 280 ) { this._y = 280; } navi.slider._x += (num*20-navi.slider._x)/_root.spd; navi.slider._alpha += (50-navi.slider._alpha)/_root.spd; cnt++; if (cnt>Timer) { num++; loadJPG(); } } }

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

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

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

> これを機会にAS3.0に変えたいとも考えています。 > どう調べていいか分からないので質問させていただきました。 ムービーの構造などからして全面作り替えなので, ActionScript のみの変更で ActionScript 3.0 に変更することはそもそも不可能ですから, 書き替える(作り直す)のはあくまでも質問者さんで, 回答者ではないということでよろしいですよね? onClipEvent (load) {} や onClipEvent (data) {} や onClipEvent (enterFrame) {} などは 主に ActionScript 1.0 でも最も古い Flash 5 で使われていた ムービークリップ 自体に書く onClipEventイベントハンドラ と呼ばれるもので, ActionScript 1.0 でも Flash MX 以降は普通使われなくなりました。 Flash MX 以降では フレーム に書く イベントハンドラメソッド に移行され とうとう ActionScript 3.0 においてはムービークリップ自体には何も書くことはできなくなりました。 onClipEvent (data) {} これは ムービークリップ が登場(表示)されたときに1回だけ実行される onClipEventイベントハンドラ です。 ActionScript 3.0 の場合, フレーム や クラスファイル に書く必要があります。 onClipEvent (data) {} これは 外部テキストデータ を Flash 内(ムービークリップ内) にロードし, そのデータが「ロード完了!」したときに実行される onClipEventイベントハンドラ です。 ActionScript 3.0 の場合, URLLoader クラスのインスタンスを準備して, そのインスタンスに外部テキストをロードし Eventクラスの COMPLETE 発生時に何かをすることになると思います。 「ActionScript 3.0で外部テキストファイルを読込む」 http://f-site.org/articles/2007/02/08061116.html onClipEvent (enterFrame) {} これは 1フレーム進む時間毎に毎回実行されるonClipEventイベントハンドラ です。 ActionScript 3.0 の場合, Eventクラスの ENTER_FRAME 発生時に何かの関数を実行することになると思います。 「繰り返し発生するイベント Event.ENTER_FRAME」 http://oshige.com/flash/as3note_cs4/2009/09/-evententer-frame.html 次に各onClipEventイベントハンドラ の内部に入ります。 attachMovie ActionScript 3.0 の場合 これはライブラリにあるムービークリップを「ActionScriptで書き出す」設定にし, ムービークリップ にクラス名を付け new でそのクラスを呼び出し,ステージ上に addChild します。 「ActionScript3 初心者講座まとめ ムービークリップを張ってみる 」 http://www22.atwiki.jp/flashcs3/pages/13.html removeMovieClip ActionScript 3.0 の場合 その消したいインスタンスが存在する階層 つまりそのインスタンスの親階層に, 「子を削除せよ」=removeChild という命令をします。 「BONKURA BLOG - [AS3.0]ライブラリからムービークリップを追加」 http://blog.bonkura.jp/2008/08/as30-1.html とにかくドキュメントの全面作り替えです。 #1の方のおしゃるように考え方も全面改定した方が良いかもしれません。 だいたいそんなところです。 これでほぼ回答字数制限いっぱいです。

その他の回答 (2)

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

今現在(2010年5月16日 12時02分 現在), なぜか非表示になっている #2 です。 #1 の方への補足(お礼)を拝見しました。 > このスクリプトをどうすれば、 > swfを読み込めるのかという事を知りたいので、 >   ~略~ > AS1.0のままでもかまいませんので、、。 と書かれていらっしゃいますが, ご質問で書かれていらっしゃるスクリプトの中に JPEG をロードする部分などありませんよ。 this.loadVariables( Pass + "top_flash_url.txt"); これで, Pass = "img_top_flash/"; と top_flash_url.txt を連結したファイル つまり「img_top_flash/top_flash_url.txt」 つまり「img_top_flash フォルダ内の top_flash_url.txt」 を,そのムービークリップ内にロードして, その 「top_flash_url.txt」 に書いてあるもの(JPEGファイル名)をロードするんじゃないでしょうか? それで,外部テキストで 「ファイル名(拡張子抜き)」 まで指定しておいて, _root.mc[mcName].fileName = Pass+picArray[num]+".jpg"; の部分で拡張子「.jpg」を付け加えていると思います したがって上の +".jpg"; の部分を +".swf"; にすれば良いと思います。 ムービー全体が見えないので何とも言えません。 とにかく書かれていらっしゃるスクリプトには JPEG をロードするスクリプトはありません。 推測することだけしかできません。 多分, JPEGをロードするスクリプトの本体は ライブラリにあるムービークリップシンボルの中に書き込まれてあるような気がします。

yujiyamasa
質問者

お礼

非常に丁寧な回答をしていただきましてありがとうございます。 BlurFiltanさんの回答を参考に頑張ってみたいと思います。 ほとんど知識が無い状態でしたので非常に勉強になりました。 ありがとうございました。

  • 76masa
  • ベストアンサー率50% (8/16)
回答No.1

as1.0からas3.0に書き換えたいと言う事ですね? 根本的に書き方、考え方がかわりました。 ・イベントは「addeventlistener」を使用します ・プロパティの頭に「_」は付きません。 ・rootはメインのタイムラインとは限らない ・attachMovieはなくなりました。 詳しくは見ていませんが、この辺りが関係ある大きな変更かな? その他、変更点は大量にありますので、 as3.0の事を普通に勉強しながら、書き換える方が良いと思います。

yujiyamasa
質問者

お礼

回答ありがとうございます。 急いでいますので、今回のこの質問では このスクリプトをどうすれば、 swfを読み込めるのかという事を知りたいので、 今回は「勉強しながら」というのはひとまず置いといて ご回答の方をよろしくお願いいたします。 AS1.0のままでもかまいませんので、、。

関連するQ&A

  • 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(); } }

  • flash as2.0 hitTest()について

    FLASHMXで作業をしています。 mcが壁に当たると反対方向にmcを移動させたいのですが 以下では、うまくいきません。理由がわかりませんし打開策も わかりません。解決策を教えてください。よろしくお願いいたします。 onClipEvent(load){ this._x=100; this._y=380; } onClipEvent(enterFrame){ this._y -=3; if(_root.tama_mc.hitTest(_root.kabe_mc)==true){ this._y +=5; } }

  • actionscript2.0でMCの切り替えなど

    Flash初心者で勉強中の身なのですがどうか質問させてください。 根本的に間違っていたりできないことをやろうとしていたら申し訳ないです。。 その際にはこう改変した方がいいとのご指示をご教示頂きたいです。よろしくお願いいたします。 attachMovieを使ってライブラリ内のMCをステージに呼び出し、そのMCを押す度にそのMCを切り替えたいと考えています。 ライブラリにはa1,a2,,,a5、b1,b2,,,,b5,c1,d1,e1…という識別子をつけたMCを用意しています。 a-eの横幅は80×80です。 20ずつ間を空けて○1のMCを横一列に配置しました。 _root.attachMovie("a1", "a1",1, {_x: 100, _y: 100}); _root.attachMovie("b1", "b1",1, {_x: 200, _y: 100}); _root.attachMovie("c1", "c1",1, {_x: 300, _y: 100}); _root.attachMovie("d1", "d1",1, {_x: 400, _y: 100}); _root.attachMovie("e1", "e1",1, {_x: 500, _y: 100}); このMCを押すと、MCが数字の大きいものに切り替わる(b1を押すとb2のMCに…で5まで)ようにしたいので、 ひとつひとつを下記のscriptで記述しました。 _root.attachMovie("b1", "b1",1, {_x: 200, _y: 100}); b1.onPress=function(){ b1.removeMovieClip(); _root.attachMovie("b2", "b2",1, {_x: 200, _y: 100}); b2.onPress=function(){ b2.removeMovieClip(); _root.attachMovie("b3", "b3",1, {_x: 200, _y: 100}); b3.onPress=function(){ b3.removeMovieClip(); _root.attachMovie("b4", "b4",1, {_x: 200, _y: 100}); b4.onPress=function(){ b4.removeMovieClip(); _root.attachMovie("b5", "b5",1, {_x: 200, _y: 100});}}}} これをa-e同じことを繰り返しています。 ここからが問題なのですが、 ここで例えば a2,b5,c1,d3,e1 という風に適当に押されてMCが切り替わり、整列させるボタンが押された時、 その数字を参照して 縦に20pxずつ空けながら b5 (空行/4があった場合の行) d3 a2 c1(20pxの空白)e1 と並べ替えたいと思っています。 つまり、a-eが現在どの数字(○1,○2..)なのかを調べ、その数字の若い方から順に縦に配置させたいと考えています。 また、上のc1,e1のように1の数字のMCが2つ以上あった場合は、同じ行に20pxずつ空けて横に配置していきたいのです。 その調べた数字の順に縦と横に並べ替える(新たにステージ上に配置し直す)というルール付けをどういうscriptを書けば上手く行くかが自分ではどうにも分からず、ここから進めない状態です。。 誰がどんな回数押したとしてもそれに準じた整列をして欲しいのですが、そのやり方があるようでしたらどうかご教示頂きたいです。 また、上記の私の書き方では難しいようでしたらそこから改変したものをお教え願いたいです。 分からないことばかりで申し訳ないのですが、何卒よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHでの深度の設定

    こんにちは、よろしくお願い致します。 使用OSはmacOS10.28 使用ソフトはFLASH MX 2004です。 アクションをフレームに書いて括弧内のURLの動きを作りました 白いバックに白い文字でリンクを置き、以下のスクリプトで反応すると白バックに隠していた白いリンクが見える。と、いったものを作ろうとしたのですが、うまくいきません・・・ リンクしたい物の深度を_root.link.swapDepths(5);としたりするとリンクしたい物が消えてしまいます。 駄文で失礼いたしますが、どなたかお詳しい方教えていただきませんか?お願いします。 this.makemc(); function makemc() { cnt = 20; w = Stage.width/(cnt+1); h = Stage.height/(cnt+1); for (i=1; i<=cnt; i++) { for (j=1; j<=cnt; j++) { x = i*w; y = j*h; ++depth; newname = "ball"+depth; props = {_x:x, _y:y, onMouseMove:effect}; this.attachMovie("ball", newname, depth, props); } } } function effect() { cMax = 150; a = this._x-_root._xmouse; b = this._y-_root._ymouse; c = Math.sqrt(a*a+b*b); if (c>cMax) { d = 0; } else { d = 1000*(1-c/cMax); } this._xscale = Math.max(1, d); this._yscale = Math.max(1, d); }

  • flashのscriptを特定のフレームに!

    flashのactionscript2.0で記述したスクリプト を特定のフレームにだけ適用したいのですが どのようにすればよいのでしょうか。 いま、シーン1のフレーム1に ライブラリからMC(ブロック)を呼び出して並べるスクリプト記述したのですが、シーン1で mcとmcが衝突したら、ほかのフレームに移動するようにしたのですが 移動先の画面にもライブラリから呼び出したMC(ブロック)が並んで表示されます。 ちなみに、シーン2をつくって移動させても同じことが起こります。 ネットのサンプルコードを利用していますが スクリプトは以下の通りです。 よろしくお願いいたします。 ofs_x = 100; ofs_y = 50; // 当たり用テーブル(1ならブロック,0なら何もなし) HitTable = [ [ 1,1,1,1,1,1,1,1,1,1 ], [ 1,0,0,0,0,0,0,0,0,1 ], [ 1,0,1,0,1,1,1,1,0,1 ], [ 1,0,1,0,0,1,0,0,0,1 ], [ 1,0,1,0,1,1,0,1,1,1 ], [ 1,0,1,0,1,0,0,0,0,1 ], [ 1,0,1,0,1,0,1,0,1,1 ], [ 1,0,1,0,1,0,1,1,1,1 ], [ 0,0,0,0,1,0,0,0,0,1 ], [ 1,1,1,1,1,1,1,1,0,1 ] ]; // ブロックを配置 var i = 0; var j = 0; var depth = 0; for(i=0;i<10;i++){ for(j=0;j<10;j++){ if(HitTable[j][i] == 1){ _root.attachMovie("block", "block" + depth,depth); _root["block" + depth]._x = i * 20 + ofs_x; _root["block" + depth]._y = j * 20 + ofs_y; depth ++; } } }

  • 続ドラッグ&ドロップ

    前に回答頂いたのですが、 お皿に乗った果物の上にさらに置くことができてしまうところを 置けないようにしたいのですが、どのようにしたらいいでしょうか? もう1点なのですが、果物をお皿以外でreleaseしたら、果物の位置を 元の位置に戻にはどうしたらいいでしょうか? たいへん申し訳ないのですがよろしくお願いします。 onClipEvent (load) { // osara の枚数を登録 var o_num = 3; // kudamono の個数を登録 var k_num = 5; } // on (press) { // ドラッグ開始(中央に吸着) startDrag(this, true); // 全ての osara を フレーム2 に進ませる for (var i = 0; i<o_num; i++) { _root["osara"+i].gotoAndStop(2); } // もし,osara が kudamono のどれかとヒットしていれば for (var i = 0; i<o_num; i++) { for (var j = 0; j<k_num; j++) { if (_root["osara"+i].hitTest(_root["kudamono"+j])) { // その osara を フレーム1 へ _root["osara"+i].gotoAndStop(1); } } } } // on (release) { for (var i = 0; i<o_num; i++) { //ドラッグ中のMCの真下にosara? があれば if (_root["osara"+i].hitTest(_root._xmouse, _root._ymouse, true)) { // ドラッグ中のMCを osara? に吸着 this._x = _root["osara"+i]._x; this._y = _root["osara"+i]._y; } } // // 全ての osara を フレーム1 に進ませる for (var i = 0; i<o_num; i++) { _root["osara"+i].gotoAndStop(1); } // ドラッグ終了 stopDrag(); } // onClipEvent (mouseMove) { updateAfterEvent(); }

  • swf連続再生・2通り作ったのですが...

    すいません、以前swfの連続再生のことで質問させてもらったのですがお礼をさせてもらったあと、2通りのスクリプトで作ってみたのですが、うまくうごかないのです。 何が間違っているのか検討もつかずここに質問させてもらいます。 まずファイル構成は メインのseries.swfを埋め込んでいるhtml └flash_series(フォルダ名) ├series.swf(メインswf:読み込むswf)   ├first.swf (この順で再生↓、以下のswfの最終キーフレームにstop();を記述しています。)   ├second.swf   ├third.swf   ├fourth.swf └fifth.swf で、series.swfのステージに置いた空ムービークリップ「series_mc」にfirst.swf~fifth.swfを読み込み、swfの最終フレームにきたら次のswfを再生という感じで、以下のように組みました。 空ムービークリップ「series_mc」に記述しました。 ---------------------------------------------------------------- onClipEvent (load) { fileArr = new Array(); fileArr[0] = "flash_series/first.swf"; fileArr[1] = "flash_series/second.swf"; fileArr[2] = "flash_series/third.swf"; fileArr[3] = "flash_series/fourth.swf"; fileArr[4] = "flash_series/fifth.swf"; cnt = 0; series_mc.loadMovie(fileArr[cnt]); } onClipEvent (enterFrame) { if (series_mc._totalframes>=2 && series_mc._currentframe == series_mc._totalframes) { if (cnt<fileArr.length-1) { // cntに1を加算 cnt++; } else { cnt = 0; } series_mc.loadMovie(fileArr[cnt]); } } ---------------------------------------------------------------- です。もう一つは連番タイプで メインのseries.swfを埋め込んでいるhtml └flash_series(フォルダ名) ├series.swf(メインswf:読み込むswf)   ├no001.swf (この順で再生↓、以下のswfの最終キーフレームにstop();を記述しています。)   ├no002.swf   ├no003.swf   ├no004.swf └no005.swf で、これもseries.swfのステージに置いた空ムービークリップ「series_mc」にno001.swf~no004.swfを読み込み、swfの最終フレームにきたら次のswfを再生という感じで、以下のように組みました。 空ムービークリップ「series_mc」に記述しました。 ---------------------------------------------------------------- var num_swf = 5; //SWFファイルの個数 var load_file = new Array(); for (i = 0; i < num_swf; i++) { if (i < 10) { load_file[i] = "flash_series/no00" + i + ".swf"; } else if (i < 100) { load_file[i] = "flash_series/no0" + i + ".swf"; } } var i = 0; this.series_mc.loadMovie (load_file[i]); this.series_mc.onEnterFrame = function() { if(2 <= series_mc._totalframes && series_mc._currentframe <= series_mc._totalframes){ if(i<num_swf){ this.series_mc.loadMovie (load_file[++i]); } } } ---------------------------------------------------------------- と組んだのですが両方とも一つも読み込まれません、何が悪いんでしょうか?ご協力お願いします。

    • ベストアンサー
    • Flash
  • アクションスクリプト 

    下記のアクションスクリプトで徐々に目標値へ近づけたいのですが、 うまくいきません。 わかる方よろしくお願いします! btn.onRollOver = function() { clearInterval(myID); for (var i:Number = 1; i<=Max; i++) { if (this.id != i) _root["btn"+i].thumb._y = 0 _root["btn"+i].name_txt._y = 20; _root["btn"+i].frame_mc._y = -2; _root["btn"+i].frame_mc.transform.colorTransform = downColor; } else { this.thumb._y = -5 this.name_txt._y = 15              this.frame_mc._y = -6 } }

    • ベストアンサー
    • Flash
  • FlashのActionScript詳しい方お願いします

    Flashで波紋が広がっていくようなムービーのスクリプトなのですが、うまく行きません。 スクリプトが間違っているのだと思うのですが、一応本を参考に同じように入力したつもりですのでどこが間違っているのかが分かりません。 デバックしたら下のようなメッセージが出るのですが、「;」をどこかに入れたらいいのでしょうか? 『 シーン = シーン 1, レイヤー = mouse, フレーム = 1 : 行 9:';' が必要です。 onClipEvnet(mouseMove) { 』 ----------------------------------------- 以下が記述したスクリプトです。 onClipEvent(load){ if(_name== "mc"){ max=10;//複製する個数 for(i=0; i<max; i++){ this.duplicateMovieClip(i,100+i);//複製 } } } onClipEvnet(mouseMove) { if(_name=="0"){//一つ目のmcはマウスの座標とする _x=_parent._xmouse; _y=_parent._ymouse; }else{//それ以降は自分の名前から-1引いたインスタンス名の座標を取得する _x=_parent[int(_name)-1]._x; _y=_parent[int(_name)-1]._y; } updateAfterEvent(); }

  • 外部SWFファイルの中のMCのgotoAndPlayによるタイムライン制御にすて

    Flash8&WinXPでの環境でオーサリングしております。 質問なのですが、 _root.mc1_1_mc.mc1_2_mcに外部SWFファイル v2.swfをloadMovieします。 _root.mc1_1_mcのフレームアクションに function gotoF(){ パス+gotoAndPlay("goto_nextF1"); } _global.goto_cnt=0; _root.mc2_1_mcのフレームアクションに if(_global.goto_cnt=='1'){ this._parent.gotoF(); } v2.swfの中のMC,v2_mc1_mc.v2_mc2_mcのフレームアクションに if(_global.goto_cnt==0){ this.gotoAndPlay("goto_nextF2"); } _global.goto_cnt2=1; とします。 上記どちらとも、何かトリガーを作っても 外部swf v2.swfのフレームラベル"goto_nextF1",フレームラベル"goto_nextF2"に フレームを移動させることができません。 _global.goto_cntも参照されていないようです。 function gotoF(){ パス+gotoAndPlay("goto_nextF1"); } のパスかスクリプトが間違っているのでしょうか? また、 if(_global.goto_cnt==0){ this.gotoAndPlay("goto_nextF2"); } では、traceしてデバッグしても _global.goto_cntを参照していません。 この逆、v2_mc1_mc.v2_mc2_mcのフレームアクション の_global.goto_cnt2=1; を_root.mc1_1_mc.mc1_2_mcのフレームアクションで if(_global.goto_cnt2==1){ trace("ok"); } としてトリガーを作り確認しても、 これもまた参照されません。 大変無知でいささか恐縮ですが、 どなたかご教授頂けませんでしょうか。 どうぞ宜しくお願い致します。

専門家に質問してみよう