action scriptでライブラリの画像を呼び出して表示する方法

このQ&Aのポイント
  • action script初心者にもわかりやすく説明します。test.flaファイルにはa.gif、b.gif、c.gifという画像がライブラリに読み込まれています。カードというレイヤーにアクションフレームを作成し、ランダムな数字を生成します。その結果に基づいて、特定の座標にa.gif、b.gif、c.gifを表示します。
  • レイヤー上に存在しないオブジェクトでも、ライブラリから画像を呼び出して表示する方法があります。トランプのシャッフルや手札の配布時に使えるアクションスクリプトです。
  • 質問内容に関する考え方の間違いも指摘しながら、わかりやすく解説します。初心者でも理解しやすいように説明しますので、ぜひ参考にしてください。
回答を見る
  • ベストアンサー

ライブラリにある画像をaction scriptから呼び出して表示する

action script初心者ですのでわかりやすく説明していただけると助かります。 今、test.flaというファイルがあり、その中にa.gif、b.gif、c.gifというファイルをライブラリに読み込んでいます。 ここで、カードというレイヤーを作り、そのアクションフレームに card1 = Math.floor(Math.random()*3) + 1; card2 = Math.floor(Math.random()*3) + 1; card3 = Math.floor(Math.random()*3) + 1; といれてランダムの1~3の数字を出しました。 この結果に基づいて、特定の座標に結果が1の場合a.gifを、 結果が2の場合はb.gifを、3の場合はc.gifを表示したいと 思います。 すでにレイヤー上に存在しているオブジェクトであれば、 位置情報をいれてそこに置くだけなのですが、なにぶんどの カードが表示されるか決められてないのでオブジェクトは レイヤー上においてありません。 ライブラリから呼び出して表示する命令はありますでしょうか? 状況としてはトランプでシャッフルして最初の手札を配る時に どういう風にして表示したらよいかということになります。 考え方の間違いなどあるかもしれませんが、その点も指摘して いただいた上で解説していただけると助かります。 よろしくお願いします。

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

考え方は全く間違っていないと思います。 そのまま延長すればできます。 --- ライブラリから呼び出す方法 --- GIFのままだと,ライブラリから呼び出せないので, まず, そのGIFを一度ステージ上に全部呼び出して, 1つ1つをムービークリップシンボルに変換してください。 変換した後は,ステージ上から消して良いです。 ムービークリップシンボルに変換すると, ライブラリの中にもそのムービークリップシンボルが入りますよね。 それを呼び出します。 次に, 変換したムービークリップシンボルのうち1つを選択し, 「右クリック」→「リンケージ」よりリンケージの設定をします。 リンケージプロパティのパネルより,  リンケージ:□ActionScriptに書き出し という部分の □ にチェックを入れてください。 すると,   □最初のフレームに書き出し というのにもチェックが入ります。 とりあえずそれで良いと思います。 そして,その上の 識別子:[         ] という部分に,任意の識別子を付けてください。 ここでは,『gif1』という識別子にしたとします。 他のGIFの入ったムービークリップも同様にします。 それぞれの識別子は別の名前にしてください。 ここでは,他の物は『gif2』『gif3』という識別子にしたとします。 ここまで来ると準備が整ったので,スクリプトを書きます。 質問者様が書かれているスクリプトをそのまま利用して, その後に,ライブラリから呼び出し,整列させるスクリプトを付け加えると以下のようになります。 ------------------------------------ card1 = Math.floor(Math.random()*3)+1; card2 = Math.floor(Math.random()*3)+1; card3 = Math.floor(Math.random()*3)+1; _root.attachMovie("gif"+card1,"G1",1); _root.attachMovie("gif"+card2,"G2",2); _root.attachMovie("gif"+card3,"G3",3); _root.G1._x = 150; _root.G1._y =100; _root.G2._x = 250; _root.G2._y =100; _root.G3._x = 350; _root.G3._y =100; ------------------------------------ 4行目~6行目が,ライブラリからムービークリップを呼び出すスクリプトです。 構文は,ヘルプなどで調べてもらうとわかりますが, MovieClip.attachMovie("リンケージの識別子","新しいインスタンス名",深度); です。 "リンケージの識別子" の部分を, "gif"+card1 のようにしていますが, もし,card1 の値が 1 であれば, gif1 が, もし,card1 の値が 2 であれば, gif2 が, もし,card1 の値が 3 であれば, gif3 が, それぞれ呼び出されます。 リンケージの識別子を付けるときに,最後に連番を付けておくと, if文で分岐させる必要がなくなります。 呼び出されたものは,何も指定しないと,座標 (x,y)=(0,0) に表示出されます。 それでは困るので, 7行目~12行目で,座標を指定しています。 座標は,作る物によって全く変わるので,適当に数値を変えてください。 また,card1~card3 のように 3枚くらいであれば,上のように羅列したスクリプトでも良いですが, もっと card が増えると for文 などでループさせるほうが良いと思います。 こんな感じです↓。 ------------------------------------ for(var i=1;i<=3;i++){ _root["card"+i] = Math.floor(Math.random()*3)+1; _root.attachMovie("gif"+_root["card"+i],"G"+i,i); } _root.G1._x = 150; _root.G1._y =100; _root.G2._x = 250; _root.G2._y =100; _root.G3._x = 350; _root.G3._y =100; ------------------------------------ 上のスクリプトの上から6行が4行に短縮されます。 もっと,card が増えたとしても,for(var i=1;i<=3;i++) の i<=3 の 3 を変えるだけです。 下の6行も規則正しいものならば,for文の中に入れられますが, 座標がどうなるかはわからないため,for文にはしませんでした。

tukikageran
質問者

お礼

ありがとうございました。 大変わかりやすい説明をしていただいて助かりました。 カードの初期配置をすることが出来ました。 また一つ壁にぶつかってしまったのですが、それはまた 別の質問でさせていただきます。 ありがとうございました。

関連するQ&A

  • FlashソフトSuzukaで、トランプからカードを引く時、重複の無いようにしたい

    Flashの勉強をし始めた者です。ソフトはSuzukaを使っております。 トランプの簡単なゲームを作りたいと思っております。 52枚から自分の手札としてランダムで5枚のカードを引きます。 その時に、2枚目以降のカードは前に引いたカードと重複させたくないのですが どのようにしたら良いのでしょうか。 1枚目のカードをランダムにひくASは以下の様に記述しました。 カードをランダムに配るスプライトのアクションレイヤーに記述。 ------------------------------------------------------ //カードを配りたいタイミングで21~72の間にフレームを飛ばす。 Array=["21","22"  ~省略~ ,"71","72"]; frameName=Array[Math.floor(Math.random()*52)]; gotoAndPlay(frameName); ------------------------------------------------------ "21" ~~~~ "72" で52枚のカードをランダムに出すようしてあります。 ここまでは問題無いのですが、次 2枚目以降はどうしたらよいのでしょうか? 1枚目と全く同じようにアクションスクリプトを記述してしまうと、 重複したカードが出てしまう可能性があります。 お詳しい方いらっしゃいましたら、ご教授宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 画像の表示方法について

    ページが表示されるたびに画像を変更する方法が 『5・6年生にもわかるやさしいJavaScript』に紹介されていました。 URLはhttp://www.sky.sannet.ne.jp/masapine/java_top.htmlです。 これは、表示されるごとにランダムで変更する形式なのですが、 これを順番通りに画像を変更することは出来るのでしょうか。 具体的には、 <SCRIPT LANGUAGE="JavaScript"> <!-- simg=new Array(5); simg[0]="○○○.gif"; simg[1]="●●●.gif"; simg[2]="△△△.gif"; simg[3]="▲▲▲.gif"; simg[4]="□□□.gif"; Myimg=Math.floor(5*Math.random()); document.write("<center><img src='"+simg[Myimg]+"'></center>"); //--> </SCRIPT> の、Myimg=Math.floor(5*Math.random());の部分で 表示方法を決めていると思いました。 simg[ ]の数字の順番通りに表示するには、 どのようにすればいいのでしょうか。 初心者なので詳しいことが分かりませんが、 よろしくお願い致します。 また、この形式通りでなくても構いません。

  • Javascriptでランダムに画像を表示させ、さらにリンクさせる

    当方、ホームページを作成していまして、 画像をランダムに表示させることはできたのですが、 さらにその画像をクリックにて違うページにリンクさせたいと考えております。 いろいろ検索してみたのですが、明確な回答が見つからなかったもので、、、 どなたかご回答いただけると、大変助かります。 どうぞよろしくお願いいたします。 現時点で、以下の様になっています。 (4枚の画像をランダム表示させ、リンク先は同じ場所を考えています) <script language="JavaScript"> <!-- ranimg = new Array(); ranimg[0]="0.gif"; ranimg[1]="1.gif"; ranimg[2]="2.gif"; ranimg[3]="3.gif"; xx = Math.floor(ranimg.length*Math.random()); ranimg = ranimg[Math.floor(xx)]; document.write('<img src="'+ ranimg +'">'); // --> </script>

  • 画像のランダム表示-時々表示されなくなる

    ↓こんな.jsファイルを外部ファイルにして読み込ませています。 var imglist = new Array( "navi/1.gif", "navi/2.gif", "navi/3.giff", "navi/4.gif", "navi/5.gif", "navi/6.giff", "navi/7.gif" ); var selectnum = Math.floor((Math.random() * 100)) % imglist.length; var output = "<img src=" + imglist[selectnum] + ">"; document.write(output); 時々画像が表示されなくなり、×マークになってしまいます。 リロードすれば表示されるのですが…。 Dreamweaverのテンプレート部分に使用しておりまして、 そのせいなのでしょうか?ご助言ください。

    • ベストアンサー
    • HTML
  • ランダム表示の画像位置

    初めまして、本当に初心者な質問で 申し訳ないのですが回答を頂ければ 嬉しく思います。 ホームページビルダー7ライトを使い、 画像をランダムで変えたいと思って 調べてやってみたところ、以下の JavaScriptで一応は出来たんです。 <script language="JavaScript"> <!-- img = new Array img[0] = "gif/1.gif"; img[1] = "gif/2.gif"; img[2] = "gif/3.gif"; img[3] = "gif/4.gif"; img[4] = "gif/5.gif"; rnd = Math.floor(Math.random() * img.length); document.write("<img src='",img[rnd],"'>"); //--> </script> しかし、画像が一番左上に出てしまいます。 これを位置調整しようと思ったらどんな JavaScriptを使えばよろしいでしょうか? 本当に申し訳ありませんが、回答の方を どうかよろしくお願い致します。

  • javascriptを使って画像のランダム表示とロールオーバーをセット

    javascriptを使って画像のランダム表示とロールオーバーをセットで行いたいのですが上手くいきません… javascript超初心者です…。画像をランダムに表示し、さらにそのランダムに表示された画像をそれぞれ違った画像にロールオーバーさせたいのですが上手くいきません。 一応以下のように書いて試しているのですが、ランダム表示はするのですが、ロールオーバーはエラーがでてしまい画像が切り替わりません。どのようにすれば上手く出来るか、知恵を貸してください。宜しくお願いします。 <html> <body> <SCRIPT language="JavaScript"> <!-- // ランダムに画像を表示する img = new Array(); onMouseover = new Array(); onMouseout = new Array(); // 画像のアドレス(数字はジャンプ先のアドレスと対応) img[0] = "top1.gif"; img[1] = "top2.gif"; img[2] = "top3.gif"; img[3] = "top4.gif"; img[4] = "top6.gif"; // マウスオーバー onMouseover[0] = "top1roll.gif"; onMouseover[1] = "top2roll.gif"; onMouseover[2] = "top3roll.gif"; onMouseover[3] = "top4roll.gif"; onMouseover[4] = "top6roll.gif"; // マウスアウト onMouseout[0] = "top1.gif"; onMouseout[1] = "top2.gif"; onMouseout[2] = "top3.gif"; onMouseout[3] = "top4.gif"; onMouseout[4] = "top6.gif"; n = Math.floor(Math.random()*5); document.write("<img src='"+img[n]+"' border='0' onMouseover='"+onMouseover[n]+"' onMouseout='"+onMouseout[n]+"'>"); //--> </SCRIPT> </body> </html> 補足 ●ランダム用の画像が1~5まで、ロールオーバー用の画像がa~eまであるとして、ランダム表示によって1が表示されたらロールオーバーで表示される画像はaのみ、マウスアウトしたら1に戻る、というようにしたいです。同じように2-b,3-c…というように対応させたいです。 ●ページ読み込み時のみランダム用画像をランダム表示させ、後は上記のような流れにしたいです。 長くなりましたが、どなたか回答お願いいたします。

  • 色変換のライブラリ探してます

    PHPでHSBまたはHSLからhexの色の値を出せるライブラリとかを探してます HSBまたはHSLから一方通行の変換だけできれば十分です また、なければ前にAS3で書いたのを 転用しようかと思ってるんですが とくになんの資料もなくテキトーに こうすればいけんじゃね?的に作ったものなので いろいろ不安です、ムダな処理とか そもそもHSBについて基本的に間違ってるとことか あったら指摘ください public static function HSBClr(H:Number,S:Number,B:Number):int { var H=Math.abs(H%360)/60; while(H<0)H+=6 var S=Math.min(Math.abs(S),100)/100 var B=Math.min(Math.abs(B),100)/100 var rtn:int=0x010101*Math.floor(B*(1-S)*255); var c=255*S*B; var r:int=0; var g:int=0; var b:int=0; if (H<1) { r=Math.floor(c); g=Math.floor(c*H); } else if (H<2) { r=Math.floor(c*(1-H%1)); g=Math.floor(c); } else if (H<3) { g=Math.floor(c); b=Math.floor(c*(H%1)); } else if (H<4) { g=Math.floor(c*(1-H%1)); b=Math.floor(c); } else if (H<5) { b=Math.floor(c); r=Math.floor(c*(H%1)); } else { b=Math.floor(c*(1-H%1)); r=Math.floor(c); } rtn+=r*0x010000+g*0x0100+b; return rtn; }

    • ベストアンサー
    • PHP
  • javaスクリプトが表示されない。

    javaスクリプトが表示されない。 初めまして。 現在ホームページビルダー10でホームページを作っています。 写真をランダムに表示させるjavaスクリプトを作ったのですが、プレビューではちゃんと表示されるのですが、 ウェブでのプレビューや、サーバーにアップロード(さくらインターネットです)すると、 まったく表示されません。 初心者なのでどうしていいかわからず困っています。 どなたかわかる方がいらっしゃいましたら、ぜひ教えてください。 よろしくお願いします。 ちなみに、このソースを書き込んでいます。        ↓ <script language="JavaScript"><!-- myImageCnt = 12; myImage = new Array(); myRnd = Math.floor(Math.random()*myImageCnt); document.write("<img src='",myImage[myRnd],"' border='0' >"); // --></script></DIV>

  • 画像サイズを指定する

    1~6まで全て同じサイズ(200*100)の画像があります。 この画像を下記のスクリプトを使用してランダムに表示させ、 マウスを重ねるとその画像に対応した画像に切り替わる (画像1なら画像4という風に) ということをしているんですが、 表示サイズを300*150で表示させるためには どうしたらいいのでしょうか? <script language="javascript"> <!-- //ランダムにgazouを表示 img = new Array(); img[0] = "画像1.gif"; img[1] = "画像2.gif"; img[2] = "画像3.gif"; img[3] = "画像4.gif"; img[4] = "画像5.gif"; img[5] = "画像6.gif"; n = Math.floor(Math.random()*3); m = n+3; document.write("<img src='"+img[n]+"' border='0' onmouseover=src='"+img[m]+"' onmouseout=src='"+img[n]+"'>"); //--> </script> 基本的なことで申し訳ありません。 どなたかわかる方がいらっしゃれば宜しくお願い致します。

  • ライブラリにある素材をクリックしてイベントを起こしたい

    http://okwave.jp/kotaeru.php3?q=1795976 で質問させて頂きました。 無事カードの初期配置は出来たのですが、今度は選択する時に どうしたらよいかわからなくなりました。 今考えてる方法としてはカードの形で100%透明のオブジェクトを ボタンで作り、それをカードとは別の上位レイヤーに配置し、それ をクリックしたかどうかでイベントを起こすというものです。 ただ、あまりスマートな方法とは思えずもっと簡単に出来るのでは と思い質問させて頂きました。 状況としては手元にある手札3枚のうちどれかをクリックして その手札を使用するというものです。 その後、使った手札の場所は空欄になり、右にあるカードが 左に詰めてくる形で右側のカードの場所に新しいカードが補充 される形を目指しています。 何かしらのヒントでも構いませんのでご教授いただければと 思います。 よろしくお願いします。

    • ベストアンサー
    • Flash