Flash ActionScript 2.0でアドバイスをお願いいたします。
下記のような記述で、外部フォルダ内の画像(連番のファイル名)を読み込み表示させています。画像枚数は変動しますのでこのような形にしました。
そこで問題なのが、リンク先の指定です。
XMLを読み込んでファイル名「1」の画像にはID「1」のURLがクリックしたら開くようにしたいのですが、どのように設定すればいいのかわかりません;
素人なもので、どのように記述すれば良いかご教授いただければ幸いです。
どうぞよろしくお願いいたします。
-----------------------------
var n = 0;
var s = 0;
_forcusrect = false;
load_mc = createEmptyMovieClip("load_mc", -1);
var mcLoader:MovieClipLoader = new MovieClipLoader();
var oListener = new Object();
function searchTotal() {
s++;
$jpg = "img_top/p"+s+".jpg";
mcLoader.loadClip($jpg, load_mc);
load_mc._alpha = 0;
oListener.onLoadError = function() {
total = s;
clearInterval(sID);
n = 0;
autoExchange();
};
mcLoader.addListener(oListener);
}
function p_load(n) {
$jpg = "img_top/p"+n+".jpg";
mcLoader.loadClip($jpg, load_mc);
p_direction(n);
load_mc._x = 0;
load_mc._y = 0;
load_mc._alpha = 0;
_root.onEnterFrame = function() {
load_mc._alpha += (180-load_mc._alpha)/30;
current_num.text = n;
total_num.text = total-1;
}
}
function autoExchange() {
if (n>=total-1) {
n = 1;
p_load(n);
} else {
n++;
p_load(n);
}
}
sID = setInterval(searchTotal, 70);
pID = setInterval(autoExchange, 4000);
myComboBoxListener = new Object();
myComboBoxListener.change = function() {
clearInterval(pID);
if (flag!==1) {
pID = setInterval(autoExchange, myCombo.value*1000);
}
};
myCombo.addEventListener("change", myComboBoxListener);
-----------------------------------------
XML
-----------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<urllist>
<anchor id="1" url="http://www.yahoo.co.jp" target="_self" />
<anchor id="2" url="http://www.google.co.jp/" target="_self" />
<anchor id="3" url="http://www.goo.ne.jp/" target="_self" />
</urllist>
No.1ベストアンサー
- 回答日時:
◎ファイル構造 例
任意のフォルダ
├○○.swf (○○.fla)
├○○.html (○○.swf を貼り付け)
├data.xml
└img_top (フォルダ)
├p1.jpg
├p2.jpg
└p3.jpg
◎data.xml の内容 例
<?xml version="1.0" encoding="Shift_JIS"?>
<urllist>
<anchor id="1" url="http://www.yahoo.co.jp" target="_self" />
<anchor id="2" url="http://www.google.co.jp/" target="_self" />
<anchor id="3" url="http://www.goo.ne.jp/" target="_self" />
</urllist>
◎○○.swf (○○.fla) のスクリプト 例
//外部データを Shift-JIS として扱う設定
System.useCodepage = true;
//XMLインスタンス「my_xml」を作成
var my_xml:XML = new XML();
//「my_xml」内の改行などを無視
my_xml.ignoreWhite = true;
//「my_xml」にデータロード完了時の動作
my_xml.onLoad = function() {
//データのあるノードをmy_nodeとする
var my_node:XMLNode = my_xml.firstChild;
//my_node内のノード数分ループ
for (var i:Number = 0; i < my_node.childNodes.length; i++) {
//ノード数分の空のMC 「load_mc○」 を作成
_root.createEmptyMovieClip("load_mc" + (i + 1), i);
_root["load_mc" + (i + 1)]._x = i * 100;
//MovieClipLoaderインスタンス「my_mcl○」を作成
_root["my_mcl" + (i + 1)] = new MovieClipLoader();
//ロードを監視する用のオブジェクト「my_obj○」を作成
_root["my_obj" + (i + 1)] = new Object();
//外部JPEGロード完了時に実行する関数jpegLoadInitの戻り値を代入
_root["my_obj" + (i + 1)].onLoadInit = jpegLoadInit(i + 1);
//「load_mc○」のリスナーとして「my_obj○」を登録
_root["my_mcl" + (i + 1)].addListener(_root["my_obj" + (i + 1)]);
//外部JPEGのロード
_root["my_mcl" + (i + 1)].loadClip("img_top/p" + (i + 1) + ".jpg", _root["load_mc" + (i + 1)]);
}
};
//「my_xml」に「data.xml」をロード
my_xml.load("data.xml");
//関数 jpegLoadInit の定義
function jpegLoadInit(num:Number):Function {
//戻り値として以下の関数を返す
return function ():Void {
//「load_mc○」クリック時の動作
_root["load_mc" + num].onRelease = function():Void {
//ロードしたXMLからボタンに対応したurlを取り出す
var my_url:String = my_xml.firstChild.childNodes[num - 1].attributes.url;
//ロードしたXMLからボタンに対応したtargetを取り出す
var my_target:String = my_xml.firstChild.childNodes[num - 1].attributes.target;
//url を target ウィンドウで開く
getURL(my_url, my_target);
};
};
}
字数制限を超過するため概略の説明は図示↓
この回答への補足
ご回答ありがとうございます!
先にXMLの読み込みが必要だったんですね…;
もう少し教えていただきたのですが、
質問にあったスクリプトで任意の枚数の画像をスライドショーのようにしています。
そこでp1.jpgが表示されている間は、id1のリンク先へ飛ぶように、応用したいのですが、どのようにすればよいでしょうか?
教えていただければ幸いですm(__)m
No.2
- 回答日時:
#1です。
> 先にXMLの読み込みが必要だったんですね…;
ボタンにリンク(getURL)を付ける前でしたらいつでもかまいません。
しかし外部データによって作るムービークリップの数まで決める場合は
ムービークリップを作成する前にXMLロードを "完了" させておく必要があります。
それと字数の都合上
「ムービークリップには外部JPEGをロードした後でなければ
クリック動作( onRelease=function(){} )を定義できない」
という重要ポイントを 少ししか書けませんでした。
ムービークリップ に クリック動作を定義した後に
そのムービークリップに外部JPEGをロードすると(ロードが完了すると)
せっかく定義した クリック動作 が消えてしまいます。
ですから
そのムービークリップに 外部JPEGをロード "完了" した後に
クリック動作 ( onRelease=function(){} ) を定義する必要があります。
この「外部JPEGをロード "完了"」イベントは loadMovie では拾えませんから
MovieClipLoader を使って拾う必要が出てきます。
そのようなことを考え合わせると
XMLロード開始
↓
XMLロード完了
↓
ムービークリップ作成
↓
外部JPEGロード開始
↓
外部JPEGロード完了
↓
ムービークリップにリンクを付ける
という流れがスムーズにできるということになります。
「先にXMLの読み込みが必要がある」
というよりも
いつもそうとは限らないので
「いつ何をすべきかを考える必要がある」
というべきでしょうか。
> p1.jpgが表示されている間は、
> id1のリンク先へ飛ぶように、
> 応用したいのですが、どのようにすれば
意味(イメージ)が良くわかりませんが。
p1.jpg をロードしたムービークリップが表示されている間は
そのムービークリップの _visible または enabled を true にしておいて
そのムービークリップが表示されていない間は
ムービークリップの _visible または enabled を false にしておけば
_visible や enabled が false になっている間だけ
onRelease=function(){} が動作しないと思います。
または
p1.jpg をロードしたムービークリップの表示開始時に
onRelease=function(){} を定義して
そのムービークリップが非表示になるとき
onRelease=function(){} を delete しても良いかもしれません。
「F-site | イベントハンドラメソッドはdeleteで消せ!」
http://f-site.org/articles/2004/05/22140833.html
とにかく
リンクを付けたいムービークリップに対して
ムービークリップ.onRelease = function(){
ロードしたXMLから対応したURLを取り出す
ロードしたXMLから対応したTargetを取り出す
getURL(URL,Target);
};
をするわけです。
あとは上と同じで
場合によって
「いつ何をすべきかを考える必要がある」
ということでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
この曲はなんでしょう?
-
AS3 MC内ボタンクリックでシー...
-
Giam
-
Flashコンテンツを使ったWebサイト
-
ダウンロードしたデジブックはa...
-
Windows10重い
-
uwscでExcelに自動記入
-
ウインドウズ10を使っています...
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ad or script について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ZWCAD CUIXとLISPの関係について
-
AS2 attachMovie 外部画像対応に
-
XMLを読み込んで外部JPGにリン...
-
Flash ActionScript 2.0でアド...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
プログラミング、アーキテクチ...
-
python ボタンを押すと複数の関...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
-
五芒星は、悪魔崇拝とどういう...
-
else if文の順序を変えることに...
-
RPG(AS400)の本、サイトってあ...
-
変数に256文字以上のテキストを...
-
PYTHONのtkinterについて
-
Pythonのtkinterについて
-
ダブルクリックと2回クリックの...
おすすめ情報