外部画像の読み取り後の表示問題:FLASHCS3でのActionScript3.0の対応方法を教えてください

このQ&Aのポイント
  • FLASHCS3のActionScript3.0を使用して外部画像を読み込んだ後、画像を表示する方法に問題があります。
  • for文を使用して複数の画像を読みながら、読み終えたらEvent.COMPLETEで関知して画像を表示しますが、ムービー内に内包すると画像が表示されません。
  • 画像の表示ができない原因や解決方法を教えてください。
回答を見る
  • ベストアンサー

FLASHCS3のActionScript3.0で外部画像の読み取り後

FLASHCS3のActionScript3.0で外部画像の読み取り後に、ムービー内に画像を入れると表示されません。 複数画像をfor文で読みながら、読み終えたらEvent.COMPLETEで関知して、loadComp関数内で addChildして画像を表示させたいですが、その後マウスドラッグで動かせるようにするため mc1という空のムービーを作ってその中に、画像を内包したいのですがそうすると画像が表示されないです。 ※mc1.addChild(event.target.loader);というように 普通にmc1を除いて、 addChild(event.target.loader); とすると表示されます。 ムービーに内包すると画像が表示されないのはなぜか知りたいです。 よろしくお願いします。 photoLoad(); //画像読み込み関数 function photoLoad() { urlList[0] = "photo1.jpg"; urlList[1] = "photo2.jpg"; urlList[2] = "photo3.jpg"; urlList[3] = "photo4.jpg"; urlList[4] = "photo5.jpg"; for (var i = 0; i < urlList.length; i++) { var x:int; loaderList[i] = new Loader(); loaderList[i].load(new URLRequest(urlList[i])); loaderList[i].x = x; x = x+100; //画像のサイズによって変更 loaderList[i].contentLoaderInfo.addEventListener(Event.COMPLETE,loadComp); } } //画像読み込み関数ここまで**************************************** function loadComp(event:Event):void{ var mc1:MovieClip = new MovieClip(); //■■■問題の箇所・addChildの前にmc1をつけると表示されない■■■ addChild(event.target.loader); //移動可能に mc1.addEventListener(MouseEvent.MOUSE_DOWN, startObj0); mc1.addEventListener(MouseEvent.MOUSE_UP, stopObj0); function startObj0(event:MouseEvent):void { mc1.startDrag(); } function stopObj0(event:MouseEvent):void { mc1.topDrag(); } }

  • reimy1
  • お礼率64% (244/379)
  • Flash
  • 回答数1
  • ありがとう数3

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

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

var x:int; ↑単に宣言しただけでxの数値は未定なんですね。 loaderList[i].x = x; ↑未定な座標に何かを配置できる? x = x+100; //画像のサイズによって変更 ↑未定な数値に 100 を加算するってどういうこと? var mc1:MovieClip = new MovieClip(); ↑mc1 というムービークリップを作ったのですね。 ↑しかし???  この mc1 はどこに配置したの? 細かいことを書けばもっとありますが ざっと見ただけで上記のように思います。

reimy1
質問者

お礼

解決しましたケアレスミスです。 var x:int;うんぬんは別のサイトのを参考しましたが 確かに初期値もなく変ですがとりあえずエラーもなく動くので問題ないです。 しかしmc1 というムービークリップを一旦、addChild(mc1);とすることを 忘れていました。一旦配置しないとそれがないので入れられない 単純ミスでした。 ありがとうございました。

関連するQ&A

  • swfを読み込む毎にランダムに画像を読み込むには、

    下記のように決まった画像を読み込むスクリプトを現在使用しています。 フラッシュを開く毎に20枚程度の画像の中からランダムに7枚選んで表示させたいのですが、ここから修整するにはどのように考えたら良いのでしょうか? 現在はまったく固定の画像を読み込んでいるだけなのでいいのですが、、。 // 写真のURLを保存する配列 var photoArr:Array // 写真を自動的に変更するタイマー var imageTimer:Timer; // 大きな画像を読み込むローダー var bigImageLoader:Loader; // 現在表示されている画像の番号 var imageNum:Number = 0; //-------------------------------- // 初期化の処理 //-------------------------------- // 配列を設定する photoArr = new Array(); photoArr[0] = "b00.jpg"; photoArr[1] = "b01.jpg"; photoArr[2] = "b02.jpg"; photoArr[3] = "b03.jpg"; photoArr[4] = "b04.jpg"; photoArr[5] = "b05.jpg"; photoArr[6] = "b06.jpg"; // タイマーを起動 startTimer(); // サムネイルを表示 setThumbnail(); // 大きな画像を読み込む loadImage(); //-------------------------------- // 関数 //-------------------------------- // サムネイルを並べる function setThumbnail() { for (var i=0; i<photoArr.length; i++) { // MovieClipを並べる var mc:Thumbnail = new Thumbnail(); mc.y = i * 74; mc.mouseChildren = false; mc.addEventListener(MouseEvent.CLICK, onThumbnailClick); mc.buttonMode = true; mc.num = i; thumbnailTarget.addChild(mc); // サムネイル画像をロードする var loader:Loader = new Loader(); var url = "gallery_img/"+photoArr[i]; var urlRequest = new URLRequest(url); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onThumbnailLoad); loader.load(urlRequest); loader.x = 4; loader.y = 17; mc.addChild(loader); } } // タイマーをスタートする function startTimer() { imageTimer = new Timer(8000, 0); imageTimer.start(); imageTimer.addEventListener(TimerEvent.TIMER, onTimerCalled); } // 大きな画像を読み込む function loadImage() { // サムネイルの背景色を変える for (var i=0; i<photoArr.length; i++) { var mc = thumbnailTarget.getChildAt(i+1); if (i == imageNum) { mc.gotoAndStop(2); mc.scaleX = 1.1; mc.scaleY = 1.1; } else { mc.gotoAndStop(1); mc.scaleX = 1; mc.scaleY = 1; } } // 表示されている画像を消す if (bigImageLoader != null) { mainTarget.removeChild(bigImageLoader); } // 新しい画像を読み込む var url = "gallery_img/"+photoArr[imageNum]; var req = new URLRequest(url); bigImageLoader = new Loader(); bigImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad); bigImageLoader.load(req); mainTarget.addChild(bigImageLoader); } //-------------------------------- // イベント //-------------------------------- // サムネイルが押されたら実行される function onThumbnailClick(eventObj) { imageNum = eventObj.target.num; loadImage(); imageTimer.stop(); imageTimer.start(); } // サムネイルがロードされたら実行される function onThumbnailLoad(eventObj) { var mc = eventObj.target.loader; mc.width = 80; mc.height = 55; } // タイマーが呼ばれるたびに実行される function onTimerCalled(eventObj) { imageNum++; if (imageNum >= photoArr.length) { imageNum = 0; } // 大きな画像を読み込む loadImage(); } // 大きな画像が読み込まれたら実行される function onImageLoad(eventObj) { // bigImageLoader.alpha = 0; stage.addEventListener(Event.ENTER_FRAME, onFadeIn); } // function onFadeIn(eventObj) { // フェードインをつける bigImageLoader.alpha += 0.05; if (bigImageLoader.alpha >= 1) { removeEventListener(Event.ENTER_FRAME, onFadeIn); } }

    • ベストアンサー
    • Flash
  • Flash 外部から読み込んだ画像ファイル(png)の扱いについて

    閲覧ありがとうございます。 当方プログラム初心者です。 swfファイルと同じフォルダに置いた画像ファイル(test.png)を読み込んだ後、それをドラッグ&ドロップしたり、何個も生成するということをしたいと考えています。 読み込んで1度だけ表示することはできました。 しかし、ドラッグ&ドロップしようとすると、LoaderクラスにはstartDrop()メソッド、stopDropメソッドは無いという旨のエラーが 出ます。 画像ファイルを外部から読み込んだ後に、それを自由に操るには何かに変換しなければいけないのでしょうか? 読み込んだものをクラスにするということはできますか? //以下ソースです。 var pictLdr1:Loader = new Loader(); var pictURL1:String = "test.png"; var pictURLReq1:URLRequest = new URLRequest(pictURL1); pictLdr1.load(pictURLReq1); haikei.addChild(pictLdr1); pictLdr1.x = 10;   pictLdr1.y = 10; pictLdr1.addEventListener(MouseEvent.MOUSE_DOWN, pickup); pictLdr1.addEventListener(MouseEvent.MOUSE_UP, place); function pickup( event:MouseEvent ):void {    event.target.startDrag() } function place( event:MouseEvent ):void {     event.target.stopDrag( ); }

    • ベストアンサー
    • Flash
  • ActionScript3.0の修正に関して

    下記スクリプトは、A_btnをマウスオーバーすると、mcを表示し、 A_btnをマウスアウトすると、mcを非表示にするというスクリプトです。 これのマウスオーバー、マウスアウトを クリックしたら表示し、もう一度クリックしたら非表示にするというものに 変更したいのですが、 単にMouseEvent.CLICKにすると動作しなかったので どなたか教えていただけないでしょうか? よろしくお願いします。 ---------------------- 環境 action script3.0 Mac OSX Flash CS4 ---------------------- var mc:Fukidashi = new Fukidashi(); A_btn.addEventListener(MouseEvent.MOUSE_OVER,xMouseOver); function xMouseOver(evt){ mc.alpha = 0; addChild(mc); mc.x = 0; mc.y = 0; mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event){ mc.alpha += 0.05; if (mc.alpha > 1){ mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } } A_btn.addEventListener(MouseEvent.MOUSE_OUT,xMouseOut); function xMouseOut(evt){ removeChild(mc); mc.alpha = 0; }

    • ベストアンサー
    • Flash
  • 外部から読み込んだ画像にリンクをつけたい

    ActionScript3.0についての質問です。 ボタンをクリックした時に外部から画像を読み込んで、 読み込んだ画像にそれぞれに外部リンクをつけたいのですが、 リンクのつけ方が分かりません。 ボタンをクリックして外部から画像を読み込むところまではできたのですが、 その画像にリンクをつけるところで困っています。 超初心者ですので、できるだけ現状のプログラムを生かして変更したいのですが… どなたか分かる方がいらっしゃいましたら、教えていただきたいです。 よろしくお願いいたします。 【Main.as】 package { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.display.Loader; import flash.display.LoaderInfo; import flash.net.URLRequest; import flash.display.SimpleButton; public class Main extends Sprite { private var contentMC:MovieClip; private var contentLoader:Loader; //コンストラクタ public function Main(){ //外部ファイルを配置するムービークリップの生成 contentMC = new MovieClip(); contentMC.x=0; contentMC.y=0; addChild(contentMC); //Loaderオブジェクトを生成 contentLoader = new Loader(); contentMC.addChild(contentLoader); //ボタン処理 my1_btn.addEventListener(MouseEvent.CLICK,my1Handler); my2_btn.addEventListener(MouseEvent.CLICK,my2Handler); my3_btn.addEventListener(MouseEvent.CLICK,my3Handler); } //各ボタンをクリックしたときに外部ファイルを読み込む private function my1Handler(evt:MouseEvent):void{ var url="img/flashimg01.jpg"; loadContent(url); } private function my2Handler(evt:MouseEvent):void{ var url="img/flashimg02.jpg"; loadContent(url); } private function my3Handler(evt:MouseEvent):void{ var url="img/flashimg03.jpg"; loadContent(url); } //外部ファイル読込 private function loadContent(url){ var req:URLRequest = new URLRequest(url); contentLoader.load(req); } } }

    • ベストアンサー
    • Flash
  • actionscript 3.0 勉強中のもです。

    よろしくお願いします。 ある右へ動いていく四角をクリックするとそれ自体のvisibleプロパティに変化(消える)を起こす事を意図して以下のような、プログラムを作りました。しかしながら、横移動の動作を確認しましたが、クリックをしても横移動を続けるだけでした。_mc.addEventListener(Event.ENTER_FRAME,onGo)を抜かした状態で見てみると、しっかり消えることを確認しました。しかし_mc.addEventListener(Event.ENTER_FRAME,onGo) を加えると上記のようになります。2つのイベントリスナーをつなげて書く事は間違った事ではないと思っています。どのように考えて書き直したらしたらよろしいのでしょうか?お心当たりございましたらどうぞよろしくお願いします。 package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Main extends Sprite { var _mc:Sprite = new Sprite; function Main() { _mc.graphics.beginFill(0x334455); _mc.graphics.drawRect(0,0,120,120); _mc.graphics.endFill(); _mc.x= 130; _mc.y= 220; addChild(_mc); _mc.addEventListener(MouseEvent.CLICK,onClick2); _mc.addEventListener(Event.ENTER_FRAME,onGo); } function onClick2(event:MouseEvent):void { trace(event.target.name + "をクリックしました。"); _mc.visible= !(_mc.visible); } function onGo(event:Event):void { if(_mc.visible=true) { _mc.x += 1 } } } }

    • ベストアンサー
    • HTML
  • actionscript 3.0 勉強中のもです。

    ある四角の枠状のものを加速をつけて落下させることを意図して入力をしましたが、ただいま以下のプログラミングにおいて「外部からの表示可能な複数の定義は使用できません。」とメッセージを受けました。当方、勉強中にて全くメッセージ内容の見当がつきません。もしご回答、アドバイス等いただけましたら助かります。またプログラムの書き方についても以下でお気づきの点がありましたら、ご指導いただければ幸いです。 よろしくお願い致します。 package{ import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Rakka extends Sprite{ var maru_mc:Sprite = new Sprite; maru_mc.graphic.lineStyle(6,0xee0033) maru_mc.graphic.drawRect(0,0,120,120) var i:int; this.addChild(maru_mc); maru_mc.addEventListener(Event.ENTER_FRAME,goBound); stage.addEventListener(Event.MouseEvent,onEnter); } function onEnter(e:MouseEvent):void{ maru_mc.x = mouseX maru_mc.y = mouseY } function goBound(e:Event){ i = 5; mouse_mc.y = mouse_mc.y +i*y/100 } }

    • ベストアンサー
    • 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
  • Flash(ActionScript3.0)

    Flash(ActionScript3.0)でゲーム制作を行っています。 ActionScriptもFlashも最近初めて触れた初心者で、分からないことがたくさん湧いてきて困っています。 よろしければご回答お願い致します。 インスタンスをドラッグすることができる、という要素と、 インスタンスをクリックすると45度回転する、という要素を同時に入れたいのですが、 同時にプログラムを組むとドラッグだけをすることができず、 どうしてもドラッグ後に45度回転してしまいます。 (プログラムのソースはネットから拾ってきたものです)。 どうすればドラッグと回転を分けることができるのでしょうか。 プログラム自体は以下のように組みました。 ご回答いただければ嬉しいです。 よろしくお願い致します。 //インスタンスの回転プログラム mc1.addEventListener(MouseEvent.CLICK, kaiten); function kaiten(event:MouseEvent) { mc1.rotation += 45; } //インスタンスのドラッグプログラム //インスタンスの0点からのマウス座標用変数 var mc1X:int; var mc1Y:int; //マウスがインスタンスを押したらsec1開始 mc1.addEventListener(MouseEvent.MOUSE_DOWN,sec1); //sec1 マウスダウン座標確認、sec2開始 function sec1(event:MouseEvent):void { mc1X = event.localX; mc1Y = event.localY; addEventListener(MouseEvent.MOUSE_MOVE,sec2); } //sec2 インスタンス移動 function sec2(event):void { mc1.x = mouseX-mc1X; mc1.y = mouseY-mc1Y; //低FPSマウス移動スムーズ対応 event.updateAfterEvent(); } //マウスが離れたらsec3開始 stage.addEventListener(MouseEvent.MOUSE_UP,sec3); mc1.addEventListener(MouseEvent.MOUSE_OUT,sec3); //sec3 sec2停止 function sec3(event):void { removeEventListener(MouseEvent.MOUSE_MOVE,sec2); }

  • actionscript3.0 rotationについて

    actionscript3.0 rotationについて btnを押すごとにmcを時計回りに90度減速させながら回転させたいと思っています。 しかし2回ボタンを押して180度回転させるまではうまくいくのですが 3回目に270度になると、回転がとまりません。 分岐させて、-90度回そうと思うと(当たり前ですが)逆回転してしまいます。 どのように記述すればよいでしょうか? よろしくお願いします。 以下スクリプトです。 var i:int=0; function onEnter(event:Event):void{ mc.rotation += (i-mc.rotation)*0.1; } addEventListener(Event.ENTER_FRAME, onEnter); btn.addEventListener(MouseEvent.MOUSE_DOWN, MouseLDownFunc); function MouseLDownFunc(event:MouseEvent):void{ i+=90; };

    • ベストアンサー
    • Flash
  • Flash as3.0版ソース  ボタンで内容遷移、うまくいかない…

    こんにちは。 Flash as3.0勉強始めてばかりです。 下記のソースのエラーはボタンを押したたびに、表示した内容はどんどん重ねています。たとえば、(1)ボタンを押した場合、(1)の内容を表示されまして。(2)ボタンを押したとき、画面には(1)+(2)の内容を表示されています。 いろいろ調べましたんですが、なかなかうまくいかないです。 ご解答をよろしくお願い致します。 詳細ソース ーーーーーーーーーーーーーーーーーーーーーー // イベントを設定 Button_tsr.addEventListener ( MouseEvent.CLICK , onClick1 ); Button_gaiyou.addEventListener ( MouseEvent.CLICK , onClick2 ); Button_message.addEventListener ( MouseEvent.CLICK , onClick3 ); Button_jigyou.addEventListener ( MouseEvent.CLICK , onClick4 ); Button_saiyou.addEventListener ( MouseEvent.CLICK , onClick5 ); Button_toiawase.addEventListener ( MouseEvent.CLICK , onClick6 ); // ローダーオブジェクトを作成し配置 var loader_obj : Loader = new Loader(); stage.addChild (loader_obj); loader_obj.x = 85; loader_obj.y =97; // 画面クリックをするとonClickが動作するイベント function onClick1 ( event:MouseEvent ) { // URLRequestを設定 var url0:URLRequest = new URLRequest( "Top.swf" ); // 実際にページに飛ぶ loader_obj.load ( url0 ); } function onClick2 ( event:MouseEvent ) { // URLRequestを設定 var url1:URLRequest = new URLRequest( "概要.swf" ); // 実際にページに飛ぶ loader_obj.load ( url1 ); } function onClick3 ( event:MouseEvent ) { // URLRequestを設定 var url2:URLRequest = new URLRequest( "Message.swf" ); // 実際にページに飛ぶ loader_obj.load ( url2); } function onClick4 ( event:MouseEvent ) { // URLRequestを設定 var url3:URLRequest = new URLRequest( "サービス.swf" ); // 実際にページに飛ぶ loader_obj.load ( url3); } function onClick5 ( event:MouseEvent ) { // URLRequestを設定 var url4:URLRequest = new URLRequest( "情報.swf" ); // 実際にページに飛ぶ loader_obj.load ( url4); } function onClick6 ( event:MouseEvent ) { // URLRequestを設定 var url5:URLRequest = new URLRequest( "問合せ.swf" ); // 実際にページに飛ぶ loader_obj.load ( url5); }

専門家に質問してみよう