• 締切済み

ASファイルでビットマップ画像の代わりにシンボルを配置したい

Flash初心者です。 任意の点を基準に自由に拡大縮小するマップを参考書などを元に作りました。画面に表示されたマップのどこかをダブルクリックすると2倍、3倍、、とそのクリック点を中心にマップ全体が拡大していくというものです。ASファイルに書いたアクションスクリプトの途中で… mapImage = new Array(); for(var i: Number = minBairitsu; i <= maxBairitsu; ++i){ mapImage[i] = new Sprite(); for(var m: Number = 0; m < i; ++m){ for(var n: Number = 0; n < i; ++n){ var imgLoader:Loader = new Loader(); imgLoader.x = m*unitWidth; imgLoader.y = n*unitHeight; mapImage[i].addChild(imgLoader); var urlReq:URLRequest = new URLRequest("maps/map"+i+"00-"+m+"-"+n+".png"); imgLoader.load(urlReq); } ↑のように、外部からビットマップ画像を呼び出して配置しているのですが、このビットマップ画像だとマウスクリックなどのインタラクションを持たせることができないのでムービークリップに差し替えたいのです。 参考書の最後の解説で、この仕組みを利用してマウス等のインタラクションを持たせたシンボルを各階層ごとにインスタンス化して配置しておけば、ある階層のシンボルが表示されたときにそのマウスアクションを有効に出来ます。という文章だけ書いてありました。 私はその、拡大された画面のある部分にボタンがついていて、そのボタンを押すと詳細情報が別枠ででてきたり(もしくは画面全体が少し薄くなったり暗くなって、その上に詳細情報がでてくる感じ(Yahoo画像検索のような)にしたいのです。 var urlReq:URLRequest = new URLRequest("maps/map"+i+"00-"+m+"-"+n+".png"); ←ここの部分を変えれば解決するのかなあと思うのですがどうでしょうか。とりあえず.pngでない事は確かですが、どう書けば良いのか分かりません。 また、Spriteというもので配列しているようなのですが、WEBで調べた時にSpriteはタイムラインを必要としない時に適していると知りました。つまりタイムラインを使った画像は配置できないということでしょうか? 分かりづらい説明で申し訳ありません。分からない事が多くて混乱してしまっています。。 どうか御教授の程、お願い致します。

みんなの回答

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

> ↑のように、外部からビットマップ画像を呼び出して配置しているのですが、 > このビットマップ画像だとマウスクリックなどのインタラクションを持たせることができないので > ムービークリップに差し替えたいのです。 意味がわかりません。 Loader にも Sprite にも addEventListener できると思います。 また MovieClip に変えたければ, new Sprite(); の部分を new MovieClip(); に変えれば良いのではないでしょうか。 変えたところで, addEventListener ができるできないは変わりません。

miu1126
質問者

補足

BlurFiltan様 アドバイスありがとうございます。 意味不明な質問をして申し訳ありません。 何分Flash初心者なのでムービークリップでないとイベントを持たせる事はできないと思い込んでおりました。 しかし、それではこのままPNG画像のままで、その画像にボタンを配置してそれをクリックするとそこに情報がでてくる、、というようなことをするにはどうしたら良いのでしょうか。ムービークリップ内に入れ子の形でボタンを配置することができるのでしょうか…? いろいろ探していたら、理想に近いものをみつけたので例にあげさせていただきます。何かゲーム作品のWEBフライヤーみたいなのですが… http://www.gamecity.ne.jp/neoromance/webflier/index.htm こちらのWEBフライヤーのように、画像のある部分(これの場合、紫色の吹き出し部分)がボタンになっていて、クリックすると後ろの画像が薄く、暗くなり、新しく画像が出てくるようなものにしたいです。 また、その新しく出た画像にもボタンがあって、それをクリックするとまた別のページ(同じ作りで画像内容が違うフラッシュ)に飛ぶようなことをしたいです。 私が現在つくっているもの(質問させて頂いたもの)とは根本的にやり方が違うのかも分かりませんが、理想にとても近いので上げさせて頂きました。今あるものを作り替えるのではなく、最初から作り直す形になっても構いませんので、このWEBフライヤーのようなフラッシュを作るにはどうしたら良いか教えて頂けませんでしょうか。 どうぞよろしくお願い致します。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AS3で画像の縮小ができません。

    AS3で画像の縮小ができません。 お世話になります。Flash初心者です。アクションスクリプト(Ver.3)を使って、外部のXMLデータを読み込み、そこに記載されている画像のURLから画像を表示しようとしています。 XMLの読み込み、画像の配置までは出来たのですが、この画像の幅を小さくしようとしても、なぜか上手くいきません。 具体的には下記のコードのように「.width」や「.height」をつけると、コンパイルエラーもなく、ただ画像が表示されなくなります。(widthやheightをなくすと、画像は表示されます) var img1:Loader = new Loader(); var imgURL1:URLRequest = new URLRequest(myXML.style[0].image); //イメージのロード開始 img1.load(imgURL1); //座標を指定 img1.x = 100; img1.y = 100; //画像の幅、高さの指定 img1.width = 240; img1.width = 360; //配置 addChild(img1); 書き方や、考え方としておかしな部分がありますでしょうか? どなたかご存じの方がいらっしゃいましたら、参考になるURLや、ヒントだけでもかまいません。お知恵をお貸しください。よろしくお願いします。

    • ベストアンサー
    • Flash
  • 【AS3.0】画像をクリックして外部複数ファイルの読み出しと削除を行う方法

    AS3.0初心者です。 恐れ入りますが、教えていただきたいことがあります。 【開発環境:WinXP FlashCS4】 『 ・a_btnボタンをクリックすると、外部1フォルダの中の複数イメージファイル(jpg)が同時に表示される。 ・b_btnボタンをクリックすると、外部2フォルダの中の複数イメージファイルが同時に表示される 但し、他のフォルダの画像が出ている時は、前表示されていた画像は削除される 』 というものを制作しております。 a_btnをクリックすると、外部フォルダが同時に表示されるところまでは作れたのですが、b_btnをクリックした時に、a_btnをクリックした時に出てきた画像を削除して、新たに画像を表示させるというところでつまづいております。 現在のスクリプト↓ ------------------------------------------------------------ var loader:Loader=new Loader(); a_btn.addEventListener(MouseEvent.CLICK,xClick); //配列の設定 var song01:Array = ["1/e01.jpg","1/e02.jpg","1/e03.jpg","1/e04.jpg"]; var loaderList:Array = new Array(); //iの初期値 var i:int = 0; //spaceの設定 var space:Number =50; function xClick(evt:MouseEvent):void{ for(var i:int=0; i < song01.length;i++){ loaderList[i] = new Loader(); var urlReq:URLRequest= new URLRequest(song01[i]); addChild(loaderList[i]); loaderList[i].load(new URLRequest(song01[i])); loaderList[i].y = space * i+ 250; trace(song01[i]); } } ---------------------------------------------------------- 最終的にはXMLからファイルを読み出して、読み出したファイルをクリックすると音データが再生されるものを作成しようと思っております。 書籍などを見ても、うまく応用できず…恐れ入りますがヒントだけでもいただけると大変助かります。よろしくお願いできませんでしょうか?

    • ベストアンサー
    • Flash
  • (AS3)外部swfを読み込んだが表示されない

    AS3で、以下のようなコードで外部SWFを呼び出して表示するというプログラムを組んでいるのですが、なぜか画面に表示されません。ContentTypeを調べたりなど色々やってみたところ、情報が取得できるのでなんらかの理由でステージに配置されていない、または配置されているが見えなくなっています。読み込むのを画像データにしてみるとうまくいきます。画像読み込みとSWF読み込みのコードって共通ですよね? package {  import flash.display.*;  import flash.net.*;   public class Main extends Sprite {    function Main():void {     var filename:String = "easy.swf";     var request:URLRequest = new URLRequest(filename);     var loader:Loader = new Loader();     loader.load(request);     addChild(loader);   }  } } 読み込むSWFのバージョンは9.0、このプログラムの書き出しも9.0で行っているのでバージョンの問題でも無いはずです。どなたかお分かりでしたら、どうかご教授お願い致します。

  • AS3.0 写真の切り替え

    調べても調べても漠然とした状態が続いてるので質問させていただきました。 まず、サンプルとしてこんなようなものが作りたいんです。 http://www.subaru-sls.co.jp/ ここの企業みたいな写真が一定時間でその場所その場所に移動していくというのを作りたいのですが、今後のことを考え、タイムラインにASを組むのではなく、外部AS(ドキュメントクラス?)だけで作りたいのです。 因みに写真などの配置はなんとかできたのですが、写真が切り替わるのがまったくわかりません。 こちらが現状況のコードになります。↓ package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.display.Shape; import flash.events.TimerEvent; import flash.utils.Timer; import flash.events.MouseEvent; import flash.display.Bitmap; [SWF(width = "550",height = "400")] public class main extends Sprite { //プロパティ var mc01:Sprite = new Sprite(); var mc02:Sprite = new Sprite(); var mc03:Sprite = new Sprite(); var imgUrl01:String = "kabegami1.jpg"; var imgUrl02:String = "kabegami2.jpg"; var imgUrl03:String = "kabegami3.jpg"; var onUrl01:URLRequest = new URLRequest(imgUrl01); var onUrl02:URLRequest = new URLRequest(imgUrl02); var onUrl03:URLRequest = new URLRequest(imgUrl03); var img01:Loader = new Loader(); var img02:Loader = new Loader(); var img03:Loader = new Loader(); var square01:Shape = new Shape(); var square02:Shape = new Shape(); var square03:Shape = new Shape(); var i:int = 0; var timer:Timer = new Timer(20); //コンストラクタ public function main () { init (); } //メソッド private function init () { square01.graphics.beginFill (0x000000); square02.graphics.beginFill (0x000000); square03.graphics.beginFill (0x000000); square01.graphics.drawRect (10, 10, 330, 380); square02.graphics.drawRect (350, 10, 110, 380); square03.graphics.drawRect (470, 10, 70, 380); square01.graphics.endFill (); square02.graphics.endFill (); square03.graphics.endFill (); img01.mask = square01; img02.mask = square02; img03.mask = square03; img01.load (onUrl01); img02.load (onUrl02); img03.load (onUrl03); addChild (square01); addChild (square02); addChild (square03); addChild (img01); addChild (img02); addChild (img03); timer.addEventListener (TimerEvent.TIMER,onTimer); timer.start (); img01.addEventListener (MouseEvent.MOUSE_DOWN,mouseDownHandler); } private function mouseDownHandler (event:MouseEvent):void { } private function onTimer (event:TimerEvent):void { i++; img01.alpha -= 0.01; } } } 長文になってしまいましたが、どうかご教授お願いします。

    • ベストアンサー
    • Flash
  • AS3のbuttomModeは、Loaderで読み込んだ画像には適用で

    AS3のbuttomModeは、Loaderで読み込んだ画像には適用できないのでしょうか? お世話になります。AS初心者です。 XMLから外部画像のURLを取得して、ステージに配置しているのですが、その際、その画像にリンクをはっています。これ自体はまったく問題なく動いているのですが、リンクなのでマウスカーソルを「指」の形にしたいと思い、読み込んだ画像に対して「buttonMode=true」を設定しています。ところが、思うようにマウスカーソルが変化しません。(参考までにコードを下に示します) Loaderで読みこんだ状態では、buttomModeは使えないのでしょうか? ヒントだけでも構いません、どなたかお知恵をお貸しください。m(__)m //ロード用のオブジェクトを作成しています。 var img:Loader = new Loader(); //XMLから画像のURLを読み込んでいます。 //myXMLはここより前の段階でxmlファイルを読み込んでいます。 var imgURL:URLRequest = new URLRequest(myXML.data[0].image); //イメージのロード開始 img.load(imgURL); //座標を指定 img.x = 100; img.y = 100; //マウスイベントを設定してリンクを設定しておく //imgClickは別の個所でnavigateToURLで、 //リンクをするように記述しています。 img.addEventListener(MouseEvent.CLICK, imgClick); //マウスモードをtrueにします。 img.buttomMode = true; //ステージに配置します。 addChild(img);

    • ベストアンサー
    • Flash
  • AS3.0で埋め込み画像を文字列から呼び出して表示したいです。

    AS3.0で埋め込み画像を文字列から呼び出して表示したいです。 public class Main extends Sprite { [Embed(source="../img/re.png")] public var re_png:Class; public function Main():void { var ClassReference:Class = getDefinitionByName("re_png") as Class; var imgObj:Bitmap = new ClassReference();//表示できない //var imgObj:Bitmap = new re_png();//表示できる addChild(imgObj); } } 普通にnew re_png();で画像を呼び出すことはできましたが、getDefinitionByNameを使って 文字列で呼び出すと変数 re_png は定義されていません。とエラーが出ました。 どうすれば文字列から表示させることができるでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • 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
  • ASファイルからのstage

    flashcs3 actionscript3.0で作成しています。 asファイル "Test.as" package { import flash.display.DisplayObjectContainer; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.*; public class Test extends Sprite { public function Test() { init(); } private function init() { for (var i:uint = 0; i<10; i++) { var sp:Sprite = new Sprite(); sp.graphics.beginFill(0x00CCFF); sp.graphics.drawRect(i*20,50,20,20); sp.graphics.endFill(); stage.addChild(sp); } } } } flash var hoge2 = new Test(); と書いてflash上のstage上にSpriteをaddChildしたいのですがstageをnullと解釈してしまいます。 この場合flash上のstageを参照するにはどうすれば良いのでしょうか?

    • ベストアンサー
    • 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); }

  • 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
このQ&Aのポイント
  • PR-500MIとIPoE対応ルーター01を繋いでいたが、電源を落とした後、インターネットに繋がらなくなってしまった。詳細なランプ点灯状況を記載しているが、原因は不明。
  • PR-500MIとIPoE対応ルーター01を使用していたが、電源を落とした後にインターネット接続ができなくなった。詳細なランプ点灯状況を確認し、原因を特定したい。
  • インターネットに接続できなくなった。PR-500MIとIPoE対応ルーター01を利用していたが、電源を落としたあとに問題が発生。ランプ点灯状況をチェックし、解決策を教えてほしい。
回答を見る