![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Flash Lite 1.1を使って2つのMCを制御したいのですが、うまくいきません。
2つのMCに「hanabira1」と「hanabira2」のインスタンス名をそれぞれ設定し、このMCをそれぞれスクリプトで動かそうと以下のプログラムを入力しました。
for (i = 1; i < 2; i++) {
hana = "hanabira" add i;
hana._rotation += 5;
}
これでパブリッシュをしたのですが、
【次のコンテンツに問題があります : 5 ~ SWF データ内の ActionScript が無効です。】
というエラー文が表示されて動作してくれませんでした。
繰り返し関数を用いて、MCを
1.「hanabira」+「数値」で文字列の結合
2.結合した文字列と同じMCを制御
3.「数値」に1を足して、また1番を繰り返す
というのをやりたいのですが、解決方法をご存知の方がおられましたら、是非ともご教授をお願いしたく思います。
よろしくお願いします、
No.1ベストアンサー
- 回答日時:
ステージ上 に 「hanabira1」 と 「hanabira2」 というインスタンス名のムービークリップがあるものとします。
まずタイムラインを2フレームにします。
花びらを置いたフレームはそのままで,
スクリプトを書くレイヤーをそれぞれキーフレームに変換します 【図↓】。
少し現代風に書くのでしたら次のようにすると思います。
フレーム1
---------------------------------
for (i=1; i<=2; i++) {
eval("hanabira" add i)._rotation += 5;
}
---------------------------------
フレーム2
---------------
gotoAndPlay(1);
---------------
古い(本来の)書き方風にすると次のようになります。
フレーム1
----------------------------------------------
for (i=1; i<=2; i++) {
setProperty("hanabira" add i, _rotation, getProperty("hanabira" add i, _rotation)+5);
}
----------------------------------------------
フレーム2
---------------
gotoAndPlay(1);
---------------
1つ目のスクリプトの欠点はドットシンタックスによるターゲットパスの記述です。
Flash Lite 1.x ではスラッシュシンタックスによるターゲットパスを使うのが本来の書き方です。
上記の場合はドットシンタックスでも動くのですが,
場合によっては動作しないケースもあります。
スラッシュシンタックスに統一する方が混乱が少なくなると思います。
2つ目のスクリプトの欠点は「見慣れない」&「回りくどい」という点です。
Flash Lite 1.x 言語には,本来メソッドなどというものはなくて,関数でアクションを指定します。
つまりオブジェクトや値は関数の引数に入る場合がほとんどです。
// ターゲット(MC) の 指定プロパティ に値をセット
setProperty(ターゲット , プロパティ , 値)
// ターゲット(MC) の 指定プロパティ の値をゲット
getProperty(ターゲット , プロパティ)
この2つの組合せです。
//setProperty(ターゲット, プロパティ, getProperty(ターゲット, プロパティ))
setProperty("hanabira" add i, _rotation, getProperty("hanabira" add i, _rotation)+5);
形が Excel の関数に似ています。
' A1セルの値を文字列にしてその文字列の左から3文字を返す
=LEFT(TEXT(A1,0),3)
関数ばかりなので,引数にぐちゃぐちゃ色んなものが入りこみます。
したがって長くて非常にわかりにくくなりがちですが,
こちらの方が Flash Lite 1.x の本来の書き方です。
getProperty で得られる値を変数化しておけば長くなるのはある程度解消されますが...。
また,間違った書き方だと思いますが,なぜか動作するものもあります。
フレーム1
----------------------------
for (i=1; i<=2; i++) {
tellTarget ("hanabira" add i) {
_rotation += 5;
}
}
----------------------------
フレーム2
---------------
gotoAndPlay(1);
---------------
tellTarget の使い方として意味的におかしいと思いますが,動くことは動きます。
(setProperty や getProperty が使えない ParaFla! 系ソフトはこれを使う)
とにかくどの場合にしても,
フレームを2フレームにして,フレーム1と2をグルグルループ再生させることで,
1フレーム進む時間ごとに毎回 5 どずつ回転させます。
しかし何にしても上のような方法をとると,
メインのタイムラインをフレーム3以降に進めることができなくなってしまいます。
メインのタイムラインをフレーム3以降に進めた上で,
上のようなスクリプトを随時動作させたい場合は,ムービークリップを使います。
ムービークリップの中に花びらを置いて,
ムービークリップ内のフレームをループさせて,
メインのタイムラインでは別のアニメーションを動かすようにするのが1つの方法です。
メインのタイムライン
└ムービークリップ
├hanabira1
└hanabira2
また,
花びらはそのままで,
スクリプト記述用のムービークリップ(指令塔)を作成して,
そのムービークリップ(指令塔)内のフレームをループさせて,
メインのタイムラインに置いた花びらを回転さるのも1つの方法です。
メインのタイムライン
├hanabira1
├hanabira2
└ムービークリップ(指令塔)
その場合,
ムービークリップ(指令塔)内に書くスクリプト例【絶対パス】
ムービークリップ内フレーム1
----------------------------------------------
for (i=1; i<=2; i++) {
setProperty("/hanabira" add i, _rotation, getProperty("/hanabira" add i, _rotation)+5);
}
----------------------------------------------
ムービークリップ内フレーム2
---------------
gotoAndPlay(1);
---------------
ムービークリップ(指令塔)内に書くスクリプト例【相対パス】
ムービークリップ内フレーム1
----------------------------------------------
for (i=1; i<=2; i++) {
setProperty("../hanabira" add i, _rotation, getProperty("../hanabira" add i, _rotation)+5);
}
----------------------------------------------
ムービークリップ内フレーム2
---------------
gotoAndPlay(1);
---------------
"/hanabira" は "_root.hanabira" と同じ意味です。
"../hanabira" は "_parent.hanabira" と同じ意味です。
スラッシュシンタックスによるターゲットパスの表記は,HTML のリンクの表記と良く似ています。
ただし 「./ (同階層(this))」 はありません。
同階層はパスを無記入にします。
("./hanabira" という書き方はない。 "hanabira" にする。)
("./" という書き方はない。 "" にする。)
例えば指令塔を作らず,
「hanabira1」 や 「hanabira2」 内を2フレームにして,
自分自身を回転させる場合,
フレーム1 に書くスクリプトは次のようになります。
ムービークリップ内フレーム1
----------------------------------------------
setProperty("", _rotation, getProperty("", _rotation)+5);
----------------------------------------------
ムービークリップ内フレーム2
---------------
gotoAndPlay(1);
---------------
もし 「hanabira1」 と 「hanabira2」 が同じシンボルである場合,
「hanabira1」 と 「hanabira2」 は自動的に同じ構造を持つことになりますから,
こうすれば,そもそも for文 は不要になります。
長くなりましたが,
色々なケースでの色々な書き方を書きました。
![「Flash Lite 1.1で、複数のM」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/c/1373636_5497e2fa52f25/M.jpg)
回答ありがとうございます。
先ほど、BlurFiltanさんが教えてくれた通りに書き直したら動作できました。
ドットシンタックスだと動作しない場合があるっというアドバイスを受けて、for文ではなくsetPropertyとgetPropertyを用いたスクリプトで組み立てる事に決めました。
丁寧で詳細な回答に画像の送付まで、ご親切にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- 宇宙科学・天文学・天気 AIが答えた方程式 1 2023/02/20 00:12
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- スピーカー・コンポ・ステレオ MCカートリッジのオススメを教えてください。 お時間割いてくださりありがとうございます。 当方、現在 10 2022/07/04 14:20
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FlashMX 新レイヤーを追加→フ...
-
Flash Lite 1.1で、複数のMCをA...
-
flashボタンオーバーで残像を残...
-
フレーム内に移動したい
-
チルダを含むURLの読込
-
GetPrivateProfileString変値
-
C#でDLLファイル読み込みを行う...
-
suzukaで画像と画像をくっつけ...
-
Flashで右クリックメニューにつ...
-
【C#】wavファイルの複数同時再生
-
cisco catalystのトラブルシュ...
-
フレームラベルを使った複数指...
-
外部JPGのキャッシュ削除と、読...
-
ActionScript 3.0についての質...
-
FlashsでのBGMのon/offfボタン...
-
FLASH MXで効果(アルファ等)...
-
【理系】フレームと時間を対応...
-
phpで音を鳴らす
-
外部ムービー読込み後 AS が...
-
1つのボタンで音の違う2つの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ニュースティッカーの作り方
-
Flashでの連打ゲームの作成方法...
-
ロールオーバーしたボタンは押...
-
Flashで一部レイヤーだけループ...
-
Flash lite 1.1で、指定範囲内...
-
画面上にランダムでムービーク...
-
円を描くように動くアニメーシ...
-
パブリッシュで左端が切れます
-
ページ移動する間にMCのアクシ...
-
ラジオボタンの作り方
-
長方形がランダムに消えるやつ
-
actionscript2.0でMCの切り替え...
-
flashでスライド式メニューを作...
-
ムービークリップを一定時間ご...
-
時計がついたスライドショーが...
-
プルダウンメニューを作ろうと...
-
【ActionScript】クラス化のメ...
-
ロールオーバーで他の画像を表...
-
Flashで四角い図形で切り替わる...
-
flashのActionscriptについて
おすすめ情報