• 締切済み

AS2 attachMovie 外部画像対応に

AS2 attachMovie 外部画像対応にしたい <やりたいこと> AS2 attachMovieを利用して、複数画像を読み込むサンプルがあるのですが、 これを外部画像読込対応に変更したいです。 <知りたいこと> AS2 attachMovieで、外部画像を読み込む簡単なサンプルコードを 作成していただけないでしょうか? あるいは、下記内容を、どう修正すればよいでしょうか? <現状> ・画像は「image_1」「image_2」「image_3」って感じで、ムービークリップにして、ライブラリへ入れてます。 ・ステージ上に画像は、配置せず、変わりに、ムービークリップのリンケージ識別子を、それぞれ「image_1」「image_2」「image_3」としています、また、「ASに書き出し」「最初のフレームに書き出し」にチェックを入れてます <現状のコード一部> next_bottun.onPress = function() { if (image_maisu>next_i) {//イメージ枚数より選択イメージが少なかったら next_i += 1;//選択イメージを加算 var mc_name = "image_"+next_i;//識別子の名前を変更して change_mc(mc_name, syoki_sokudo);//切り替わり関数に送る } }; function change_mc(mc_name, syoki_sokudo) { i++;//IDを加算して var new_name = "image_"+i;//インスタンス名を設定 var syoki = {_alpha:0, i:i, sokudo:syoki_sokudo};//初期値を設定 _root.main.attachMovie(mc_name, new_name, i, syoki);//mainの中に生成する

  • re999
  • お礼率61% (476/777)
  • Flash
  • 回答数1
  • ありがとう数2

みんなの回答

  • yxuxkxi
  • ベストアンサー率100% (1/1)
回答No.1

まず、上記のサンプル(と仰っているもの)はどこまでご理解されていますでしょうか? 外部ファイルの読み込みは良く使う手法ですので、 書籍やgoogle先生に聞けばいくらでも情報は出てくるはずです。 最終目的があっても課程を理解していないと、恐らく到達点へ行くのは難しいです。 まずはご自分でお調べになって、「どういう風に調べて」「どういうことをして」「どこが分からない」かを 明確に示す必要があるかと思います。 ただわからないから作ってください、というのは失礼です。 プロとして活躍されている方もたくさんおりますので。

関連するQ&A

  • AS3でattachMovie()どうするの?

    FlashCS4でAS3.0です。 http://hakuhin.jp/as/block.html 上のサイトを見ながらブロック崩しのプログラム練習をしています。 壊すブロックについてなのですが、 ブロックのMCをライブラリでリンケージして書き出して、 下のようにしてステージに並べました。 for (var i:int = 0 ; i<32; i++){ var mc:block_class = new block_class(); mc.name = "block"+i; mc.x = i % 4 * 40 +40; mc.y = Math.floor(i/4) * 15 + 25; stage.addChild(mc); } ここからがわからないところです。 ボールがブロックに当たったら消える、という文を書こうとして for (var i = 0; i<32 ; i++){   if (ball_mc.hitTestObject(mc)){ mc.visible=false;   } このような形にしているのですが、 複製したすべてのブロックに適応させるにはどうしたらよいかわかりません。 どうもAS2.0のときはattachMovie()やeval()を使ってできたことみたいなのですが・・・ どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • AS3.0でのattachMovieが分かりません

    AS2.0では リンケージで"mc"という名前で登録。 for (var i:Number=0; i<10; i++) {   var _mc:MovieClip = attachMovie("mc_"+i, "mc_"+i, getNextHighestDepth());   _mc._x = 100*i; } というような感じで10個のmcを配置できますよね。 これをAS3.0でやりたいのですが、 リンケージで"mc"という名前で登録。 他のサイトを参考に、 for (var i:int=0; i<10; i++) {   addChild(new (getDefinitionByName("mc"+i))); } とするが、"変数 mc0 は定義されていません"とコンパイルエラー。。 ひとつ配置するには addChild(new mc) でいけますが forを使って上記AS2.0版と同様の事をやるにはどう定義すればよいのでしょうか。。

    • ベストアンサー
    • Flash
  • attachMovieで同じ深度に新しいmcを生成

    as2.0です。 ライブラリにmc「go_next」があり、ステージには背景のmcがあります。 mc「go_next」はボタンの役割で、クリックすると背景のmcがスライドします。 次々とスライドさせて行きたいので、mc「go_next」をクリックするたびに新しいmcとして入れ替えたいので、attachMovieで同じ深度に生成してみたのですが、上手くいきません。 フレームに以下のように記述しました。 _root.attachMovie("go_next", "go_next_to2", 99); go_next_to2.onRelease = function() { _root.slidePos = 2; _root.attachMovie("go_next", "go_next_to3", 99); } go_next_to3.onRelease = function() { _root.slidePos = 3; _root.attachMovie("go_next", "go_next_to4", 99); } まず"go_next_to2"がステージに生成されています。 "go_next_to2"をクリックすると"go_next_to3"が生成され、"go_next_to2"は消えます。 (ここまでは成功しています。) 次にその"go_next_to3"をクリックして同様に"go_next_to4"に差し替えたいのですが、 "go_next_to3"がクリックできるようになりません。 同じ場所に差し替えたのだから同じ設定で繰り返せばいいかと思ったのですが・・ どうやったら次々と新しいmcに入れ替えていくことができますか? 教えて頂けたら嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部ファイルの画像読み込みについて

    環境 WinXP Flash8 同じボタンをいくつも配置したいのと、汎用性を持たしたいのでボタンを ASで配置したいと思いますが、ASをほとんど扱ったことがないのでわかりません。 ■やりたいこと ・ボタン1~10をステージ上に配置 ・画像(pcs1.jpg~pcs10.jpg)をそれぞれに読み込みたい。 ・画像がない場合はボタンも表示させない ・それぞれのボタンを押すとphoto_mcに画像(photo1.jpg~photo10.jpg)が読み込まれる ■現状 WEBで見つけたソースを色々といじってみた。画像は配置できたのですが ボタンのアクションが全て同じ(10番目)になってしまいます。 画像がないときの処理もわかりません。 AS:フレーム1 for (var i = 1; i<10; i++) {  _root.createEmptyMovieClip("mc"+i, i);  var load_mc = _root["mc"+i];  load_mc.createEmptyMovieClip("my_mc", 0);  var jpg_pcs = "pcs"+i+".jpg"; load_mc.my_mc.loadMovie(jpg_pcs); i = i-1; load_mc._x = i*20; i = i+1; load_mc.onPress = function() { var photo = "photo"+i+".jpg"; photo_mc.loadMovie(photo); }; } これってボタンじゃなくてmcを配置してclickイベントになってますよね? ボタンを生成したかったのですがわからなくて・・・ 根本的なことが分かっていなくてソースをいじってますがアドバイスお願い致します。 今のソースは全く無視していただいて結構です。

    • ベストアンサー
    • Flash
  • attachMovie で動的にボタン生成する方法

    以下のXMLファイルをロードして、 ------------------------------------- <?xml version='1.0'?> <data> <groop name="グループ1"> <series name="シリーズ1"> <color>赤</color><type>LL</type> </series> </groop> <groop name="グループ2"> <series name="シリーズ2"> <color>青</color><type>LL</type> </series> <series name="シリーズ3"> <color>緑</color><type>LL</type> <color>緑</color><type>LL</type> </series> </groop> </data> ------------------------------------- グループの数だけムービークリップを配置して、 次にその配置したムービークリップのマウスオーバーの際に、 シリーズの数だけムービークリップを配置して、 次にその配置したムービークリップのマウスオーバー時に、 colorの数だけのボタンを表示する、という事を実現したいのですが、どなたかアドバイスお願いできませんでしょうか。 xmlファイルのロードは成功して、次にグループの数だけムービークリップを配置する所まで成功したのですが、そこからどうすれば良いのかわからず困っています。 状況としては、bt_groop_mc と bt_series_mc を作成して、シリーズの数だけボタンを生成したいのですが、どうも切り口がつかめずこまっています。 初心者ですが、どなたかアドバイスお願いできないでしょうか。 function prev() { rootNode = this.myXML.firstChild; for (var i = 0; i<rootNode.childNodes.length; i++) { var itemNode = rootNode.childNodes[i]; //gradeノードのMC配置 var attach_mc01 = this.attachMovie("bt_groop_mc", "bt_groop_mc"+i, i); attach_mc01._x = 0; attach_mc01._y = attach_mc01._height*i; this["bt_groop_mc"+i]["bt_txt"] = itemNode.attributes.gradeName; //seriesノードのMC配置(※ここから分かりません) for (var z = 0; z<itemNode.childNodes.length; z++) { var propNode = itemNode.childNodes[z]; var attach_mc02 = this.attachMovie("bt_series_mc", "bt_series_mc"+z, 1000+z); attach_mc02._x = 100; attach_mc02._y = attach_mc02._height*i; } } gotoAndPlay("success"); }

  • 外部ASを二つ組み合わせる方法

    flash初心者です。二つのASファイルを組み合わせて作ろうとしているのですが、 外部ASをドキュメントクラスを使用して読み込み複数ある場合、調べた結果importを利用してクラスを定義出来るとの事ですが、定義が重複していますと出てしまいます。 パッケージを二個書こうとしても外部から表示可能な複数の定義は使用出来ませんと出てしまいます。二つのスクリプトを一つに纏めた方がいいのでしょうか? どなたかご教授下さい。 ASは同じディレクトリ上に配置しています。 package { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.MouseEvent; import flash.events.Event; public class CardMenu extends Sprite { private var cardList:Array = ["card01", "card02", "card03", "card04", "card05"]; private var _currentCard:MovieClip; public function CardMenu() { for ( var i:int = 0; i < cardList.length; i++ ) { var mc:MovieClip = this[cardList[i]]; mc.X = mc.x0 = mc.x; mc.Y = mc.y0 = mc.y; mc.R = mc.rot = mc.rotation; mc.S = mc.sca = mc.scaleX; mc.dep = getChildIndex(mc); mc.btn.addEventListener(MouseEvent.CLICK, openHandler); mc.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } } private function openHandler( e:MouseEvent ):void { if (Boolean(_currentCard)) { _currentCard.X = _currentCard.x0; _currentCard.Y = _currentCard.y0; _currentCard.R = _currentCard.rot; _currentCard.S = _currentCard.sca; setChildIndex(_currentCard, _currentCard.dep); _currentCard.btn.visible = true; } _currentCard = e.target.parent as MovieClip; _currentCard.X = stage.stageWidth / 2; _currentCard.Y = stage.stageHeight / 2; _currentCard.R = 0; _currentCard.S = 1; setChildIndex(_currentCard, numChildren - 1); _currentCard.btn.visible = false; } private function enterFrameHandler( e:Event ):void { var card:MovieClip = e.target as MovieClip; card.x += ( card.X - card.x ) * 0.2; card.y += ( card.Y - card.y ) * 0.2; card.rotation += ( card.R - card.rotation ) * 0.2; card.scaleX += ( card.S - card.scaleX ) * 0.2; card.scaleY = card.scaleX; } } } package { import flash.display.Sprite; import box; public class box extends Sprite { public function Main() { var box:box = new box(); } } }

  • attachMovie後のプロパティ参照

    ボタンをアタッチでサクっとコピー!ボタンを押すとそのアタッチした名前を返すようにして欲しいのですが‥うまくいきませんTT for( i=0;i<=6;i++){ this.attachMovie( "mBar" , "mbar_"+i , i ); this["mbar_"+i].onRelease=function(){  trace(_name); } } こうするとアタッチする元のMCの名前を返してしまいます。 ‥いろいろやってみてるのですがダメです・・; なにか良い方法はないでしょうか。 よろしくお願い致します。m(_ _)m

    • ベストアンサー
    • Flash
  • attachMovieでのインスタンス名

    以下のようなスクリプトを書いているのですが、 traceの値がすべてmenu_mcとなってしまいます。 インスタンス名をmenu1_mc,menu2_mc,menu3_mc,・・・としたいのですが、どうすればいいのでしょうか? i = 10; for(y = 0; y < i; y++) { trace(y); m = y+1; obj = _root.attachMovie("menu", "menu"+m, y); obj._x = 30; obj._y = 70*y; trace(this._name); } 環境はFlashCS3、ActionScript2.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
  • 外部の画像を読み込んで並べたい

    お世話になります。外部の画像を読み込み、それを縦に並べるだけで、 難しいことは無い、と思って挑戦しましたが、すでにハマって、時間だけが過ぎております。 var btnlength = 7;//並べるボタン画像の数 var btncount=1; var oLsn:Object = new Object(); var myMcLoader:MovieClipLoader //読み込み成功時 oLsn.onLoadInit = function(mc:MovieClip) { mc._y = setbtn_y ; setbtn_y = setbtn_y + mc._height; btncount++; if (!(btncount > btnlength)){ create_btn(btncount); } } //ボタンMC作成 function create_btn(_cnt){ var _mc:MovieClip = this.createEmptyMovieClip("btn"+btncount, this.getNextHightestDepth()); myMcLoader.loadClip("img/btn"+ _cnt +".png",_mc); } myMcLoader = new MovieClipLoader(); myMcLoader.addListener(oLsn); create_btn(1); やろうとしていることは、 MovieClipLoaderを使って、狙いの画像を読み出し、 読み込まれた後に、次の画像を読み出す。 という仕様です。 現状では、一番最後の、7番目の画像のみが、7番目の位置に表示されます。それ以前の画像は表示されません。 それ以前の画像が、読み込まれていないのかと思い、onProgressや、エラーも見張ってみたのですが、問題無く読み込まれていました。 なぜ、表示されないのでしょうか? ご教授いただければ、幸いでございます。

専門家に質問してみよう