トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     途切れる
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
xx_waka_xx
Åê¹ÆNo.17510
投稿日時: 2005-5-26 22:05
新米
居住地:
投稿: 7
使用環境:
WinXP MX2004
途切れる
2004を使用しています

はじめまして・・・
教えてほしいことがあります。
a = 0;
for (y=0; y<12; y++) {
for (x=0; x<12; x++) {
duplicateMovieClip("z", "z"+y+x, ++a);
eval("z"+y+x)._x = 5+(x*5);
eval("z"+y+x)._y = 5+(y*5);
}
}
zを複写して並べてみたのですが、なぜか途中で切れているみたいなのですがなぜでしょう。教えてください。
Fla4man
Åê¹ÆNo.17511
投稿日時: 2005-5-26 22:23
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: 途切れる
それは式がおかしいからです。
ループのつもりのところ("z"+y+x)に注目してください。

多分他の人が見たらおかしいのが当たり前、
何がしたいのかわからないと思うかもしれません。

しかし大切なのは

 ちゃんと目的どうり動くつもりの式を書いた 

 しかし結果が予想と違う

 なぜだかわからない

というプロセスがどうして発生したかという点にあるのでは無いかと思います。

xとyにそれぞれ0から3程度まででいいので
実際に数を代入してステップ毎に値を見るとか
あるいは手計算で紙とかtxtにループごとの値を書いてみるとか
そういった作業を通して何が悪かったか理解することが大事だとおもいます。


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

森 巧尚
Åê¹ÆNo.17512
投稿日時: 2005-5-26 22:50
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 途切れる
そうですね。
Fla4manさんの言われるように「"z"+y+x」のところに原因があります。
「文字」+「数字」+「数字」は文字になるので、xx_waka_xxさんはそれを利用して新しい名前を作ろうとしているのですね。
ですが、これによってどのような文字ができあがるかまで予想されればよかったのです。

途切れてしまうという問題は「数字が2桁になったときに、duplicateMovieClipで指定する名前に同じものができてしまうため」、一度複製されたムービークリップがあとから上書きされて消されるために起こるのです。
(ですから、このときの「xとyにそれぞれ0から3程度」ではうまく動くので気がつかないかも知れません。)

for文の中で「trace("z" + y + x);」と記述して試してみましょう。

x=0、y=1のときは「z01」となります。
x=1、y=0のときは「z10」となります。
x=1、y=10のときは「z110」となります。
ところが、
x=11、y=0のときも「z110」となってしまいます。

これは、「2つの数字がくっついてしまうために起こってしまう現象」なので、防ぐには
2つの数値の間に「数字以外の文字」を間に挟んでやるなどの対応策が考えられますね。

例えば、「"z" + y + "-" + x」のようにしてみてはいかがでしょう。

そうすれば、「z1-10」「z11-0」と別々のインスタンス名を指定することができるので消えることはなくなります。


----------------
森 巧尚
http://www.ymori.com

野中文雄
Åê¹ÆNo.17513
投稿日時: 2005-5-26 23:08
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 途切れる
書きかけていた内容は、ほとんど森さんが説明されてしまいました。しかたないので、若干の補足です。

姑の突込みのようで恐縮ですが、同名のMovieClipインスタンスであっても、深度が異なれば上書きはされずに存続します。ただ、先に生成された方[*1]が制御対象になるので、後から作成されたインスタンスは(xy座標が動かず)、複製元の真上に重なったままになります。
引用:
森 巧尚さんは書きました:
途切れてしまうという問題は「数字が2桁になったときに、duplicateMovieClipで指定する名前に同じものができてしまうため」、一度複製されたムービークリップがあとから上書きされて消されるために起こるのです。

あるいは、yに100掛けてもよいですね。
duplicateMovieClip("z", "z"+(100*y+x), ++a);
引用:
例えば、「"z" + y + "-" + x」のようにしてみてはいかがでしょう。

MovieClip. duplicateMovieClip()メソッドを使えば、Flash Player 6以降は戻り値が使えるので、問題は解消します。とはいえ、インスタンス名の重複は後々問題になりえるので、避けるべきことに変わりはありません。
a = 0;
for (y=0; y<12; y++) {
    for (x=0; x<12; x++) {
        _mc = z.duplicateMovieClip("z"+(100*y+x), ++a);
        _mc._x = 5+(x*5);
        _mc._y = 5+(y*5);
    }
}

なお、ご使用の環境は、プロフィールに記入されるとよいでしょう。
引用:
xx_waka_xxさんは書きました:
2004を使用しています

_____
[*1] 簡単にテストしてみたところでは、厳密には深度の低い方が対象になるようです。


----------------
 

xx_waka_xx
Åê¹ÆNo.17515
投稿日時: 2005-5-26 23:21
新米
居住地:
投稿: 7
使用環境:
WinXP MX2004
Re: 途切れる
途中で途切れるのは名前の付け方が悪かったのですか…
以後気をつけます。すばやい対応ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops