> 全てのムービークリップに1つのURLが適用されてしまい
> ナビゲーションとしての意味がなくなってしまいます。
とりあえずそれは当たり前の話ですよね?
url は 1つだけ↓ しか用意していないわけですから。
var url = ("http://www.yahoo.co.jp/");
> 緊急なので、早めにお返事いただけるとありがたいです。
本当に早急なのであれば,
複雑に考えず sp1~sp10 に対して1つずつ個々に
sp○.onRelease=function() {
getURL("○○", "_blank");
};
を指定すれば良いだけなのではないのでしょうか?
つまり
具体的に書けば,ご質問で書かれている
this.onRelease = function() {
getURL(url, "_blank");
};
の3行を削除して,
さらに
ご質問で書かれていらしゃるスクリプトの後にでも
sp1.onRelease=function() {
getURL("AAA.html", "_blank");
};
sp2.onRelease=function() {
getURL("BBB.html", "_blank");
};
sp3.onRelease=function() {
getURL("CCC.html", "_blank");
};
//… sp4~sp9 は省略…
sp10.onRelease=function() {
getURL("JJJ.html", "_blank");
};
のようなことを書き足せば良いだけでしょう?
これが基本です。
.
===別法===============
以上のような基本がわかっていらっしゃる上で
さらに
ご質問で書かれていらっしゃるような
for文 などで処理を済ませたい場合は次のようになります。
※書き換え箇所多数のため全文を記入↓
//-------------------------------
import flash.geom.Matrix;
import flash.filters.BlurFilter;
var composer:Array = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");
//★【追加(変更)】URLを配列に登録
var url:Array = new Array();
url[0] = "AAA.html";
url[1] = "BBB.html";
url[2] = "CCC.html";
url[3] = "DDD.html";
url[4] = "EEE.html";
url[5] = "FFF.html";
url[6] = "GGG.html";
url[7] = "HHH.html";
url[8] = "III.html";
url[9] = "JJJ.html";
var num = 10;
var speed:Number;
var diff:Number = 0;
var rd:Number;
var a:Number;
var depth:Number;
var v:Number;
this.createEmptyMovieClip("composerNameBox", 100);
composerNameBox.createTextField("tf", 120, 0, 0, 220, 25);
composerNameBox._x = -10;
composerNameBox._y = 145;
for (i=1; i<=num; i++) {
var mc = this.attachMovie("sp"+i, "sp"+i, i);
mc.n = i;
mc.onEnterFrame = circulating;
//
//★【注意】onRollOver や onRelease などは
// 関数 circulating から全て出す(入れてはダメ)
//
mc.onRollOver = function() {
this.rollover = true;
composerNameBox.tf.text = composer[this.n-1];
txtFormat(composerNameBox);
};
//
mc.onRollOut = function() {
this.rollover = false;
composerNameBox.tf.text = "";
};
//
mc.onRelease = function() {
getURL(url[this.n-1], "_blank");
};
}
function circulating() {
speed = (Stage.width/2-_xmouse)*0.005*0.001*Math.PI;
diff += speed;
rd = diff+this.n/num*2*Math.PI;
a = Math.sin(rd);
b = 0.3*Math.cos(rd);
c = 0;
d = 1;
mcx = 100-200*Math.cos(rd);
mcy = 40+40*Math.sin(rd);
var myMatrix:Matrix = new Matrix(a, b, c, d, mcx, mcy);
this.transform.matrix = myMatrix;
depth = Math.floor((3+Math.sin(rd))*2500);
this.swapDepths(depth);
if (this.rollover) {
v = 5;
} else {
v = Math.floor((1-Math.sin(rd))*5.5);
}
blurChange(this);
}
function blurChange(this_mc) {
//★【注意】BlurFilter の第3引数は 1~3
var myBlur:BlurFilter = new BlurFilter(v, v, 3);
this_mc.filters = [myBlur];
}
function txtFormat(mc) {
var format = new TextFormat();
with (format) {
size = 12;
color = 0x000000;
align = "center";
bold = true;
}
mc.tf.setTextFormat(format);
}
//-------------------------------
上記スクリプトに
次のように書いた部分があります。
//★【注意】onRollOver や onRelease などは
// 関数 circulating から全て出す(入れてはダメ)
これは,
今回の場合
onRollOver… や onRollOver… や onRelease… などの
イベントハンドラメソッドを
onEnterFrame… でわざわざ毎フレーム毎フレーム定義し直す必要がないからです。
お礼
できました!!ありがとうございます!! まさかこんな単純な事とは思ってませんでした(笑) 今回は時間がなかったのでチュートリアルの付きのjqueryで似たような感じのものを無理やり実装してしまったんですが、これで今後はflashでも対応できます。本当にありがとうございました。 これを機にActionScriptの方も少しは勉強したいと思います。