• ベストアンサー

FLASHのラスターエフェクトで、なんでリンケージにしてからじゃないと

FLASHのラスターエフェクトで、なんでリンケージにしてからじゃないとエフェクトがかからないんですか? そういう仕様だからなのでしょうか。 ステージに置いたラスター画像にエフェクトをかけることってできたりするんでしょうか。 参考サイト: http://hakuhin.jp/as/raster_efc.html

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 ご質問で言わんとされていることがわかってきたように思います。 でも,その前にですね...。 > RENDER_MOVIECLIP = _root.movieclip_mc; > にしてみたのですが、ダメでした。 そうですか? ステージ上に 「movieclip_mc」 というインスタンス名を付けたムービークリップを配置すれば普通にできましたよ。 しかし... そのことは本題じゃないでしょう? 「RENDER_MOVIECLIP = _root」 で指示するものは 「どこに配置するのか」 です。 「何を(どのビットマップを)」ではありません。「どこに(どの階層に)」です。 ご質問の本題は 「どこに配置するのかという部分」ではなく 「ビットマップデータにリンケージで識別子を付ける部分」なのでしょう? 「BitmapData」オブジェクトは, 必ずしもライブラリに配置したビットマップシンボルに識別子を付けなくても操作できます。 しかし ステージ上に配置したビットマップ自体にはインスタンス名が付けられません。 インスタンス名が付けられなければ名指しして命令ができません。 その名指しする方法の1つが, リンケージで識別子を付けるという手段なだけです。 「サインカーブで波打つビットマップ」のサンプルを使わせてもらって リンケージで識別子を付けない方法例を書きます。 「サインカーブで波打つビットマップ」のライブラリにある「dat00.png」を選択して 「リンケージ」の識別子「source」という名を削除します。 ついでに「ActionScriptに書き出し」のチェックもはずします。 このリンケージ設定を削除した「dat00.png」をステージ上にドラッグ&ドロップで配置します。 しかしこのビットマップにはインスタンス名が付けられません。 ですから このビットマップをムービークリップに変換します。 ※このとき基準点を左上に設定してムービークリップに変換します。 このステージ上のムービークリップに, 「source_mc」 というインスタンス名を付けることにしておきます。 そして「サインカーブで波打つビットマップ」のスクリプトの1行目 // ビットマップのリンケージ名 SOURCE_NAME = "source";  ↑これを  ↓次のように書き換えます //ビットマップの入ったMC SOURCE_NAME = source_mc; また // ビットマップデータ確保 bmpData = flash.display.BitmapData.loadBitmap (SOURCE_NAME);  ↑これを  ↓次のように書き換えます //ビットマップデータ確保 bmpData = new flash.display.BitmapData(SCREEN_WIDTH,SCREEN_HEIGHT); bmpData.draw(SOURCE_NAME); SOURCE_NAME._visible = false; 以上。 ビットマップには必ずリンケージで識別子を付けなければならないということはありません。 ですから工夫をすれば外部JPEGをロードして その外部データを「サインカーブで波打つ」ようにするようなことも可能です。

q0190dg
質問者

お礼

いつもありがとうございます!! 理解できたところもあれば、できなかったところもありますが、他の技術の底上げにもなっているのは確実です。 今後も邁進したいと思います。

q0190dg
質問者

補足

ありがとうございます。できました。 理解も出来ました。 リンケージで行っていたのは便宜上だったんですね。 サンプルはシンボルを作らない状態で簡素に作ってあるのだと解釈しました。 初心者なのでシンボル化しないと何もできないので何が起こっているのかわからなかった次第です。 また階層の話はよくわかりました。 しかしながら bmpData = new flash.display.BitmapData(SCREEN_WIDTH,SCREEN_HEIGHT); bmpData.draw(SOURCE_NAME); SOURCE_NAME._visible = false; なんでこうなるのかがわかりません。 自分でも追ってみるつもりですけど、急にnewとかになって、SCREEN_WIDTHとかも出てきて唐突じゃないですか。とくに SOURCE_NAME._visible = false; これってインスタンスを表示しない、ってことなんじゃあないですか。 変だなあ。とはいえちゃんと動くということは僕が変なんですが。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

> FLASHのラスターエフェクトで、 > なんでリンケージにしてからじゃないとエフェクトがかからないんですか? どのことをおっしゃっているのか具体的なことがわかりません。 何にしても「名前を付けて名指しして命令」しなければ 普通は命令したりプロパティを与えられないと思います。 例えば A君~Z君までいたとして, C君だけを校庭1周走らせたい場合は C君に 「C夫」 という名前でも付けて  C夫.ranning(1); みたいにしなければならんでしょうという意味です。 「名前を付けて名指しして命令」をしなければ 全員が走り出したり,誰も走り出さなかったりしますよね。 それで良いのか? ということです。 リンケージで識別子を与えないとエフェクトがかからないわけではありません。 インスタンスにインスタンス名を付ければ そのインスタンスに対して,名指しで,ActionScript を使って命令することはできます。 しかしステージ上にそもそもC君は存在しなくて C君がライブラリだけに存在するものでしたら そのライブラリにいる「C君」に「名前を付けて名指しして命令(ステージ上に呼び出し)」しなければ ステージ上に「C君」を呼び出すことができないでしょう? 「名前を付けて名指しして命令(ステージ上に呼び出し)」をしなければ 全員がステージ上に登場するか,誰も登場しないかになりますよね。 それで良いのか? ということです。 「エフェクト」 とは具体的に何を指しているのかかわかりませんが, その 「エフェクト」 とやらを ActionScript でかけるのでしたら 少なくとも その 「エフェクト」 とやらをかけるものに 「名前を付けて名指しして命令(エフェクトをかける)」をしなければ そのものにエフェクトをかけることができないでしょう? 「名前を付けて名指しして命令(エフェクトをかける)」をしなければ 全員にエフェクトがかかるか,誰にもエフェクトがかからないかになりますよね。 それで良いのか? ということです。 単純に,そんな無茶なソフト(すべてにしか命令できないソフト)など誰も使わないと思います。

q0190dg
質問者

お礼

出来ませんでした。 さきほどもあげた参照ページの http://hakuhin.jp/as/raster_efc.html 「サインカーブで波打つビットマップ」を例にしますと、 /////////////////////////////////////////// // 描画するターゲットパス RENDER_MOVIECLIP = _root; /////////////////////////////////////////// という部分があるので、 RENDER_MOVIECLIP = _root; をステージにあるmovieclip_mcに向けて RENDER_MOVIECLIP = _root.movieclip_mc; にしてみたのですが、ダメでした。 単純に,こんな無茶な方法など誰も使わないんでしょうか。 どなたかわかる方がいらっしゃればご教授いただければと思っております。

q0190dg
質問者

補足

伝説の回答者BlurFiltanからのご回答ありがとうございます! ※何度もほかの回答を参考にさせていただいて助けられています。 ●ステージに置いたラスター画像にエフェクトをかけることってできたりするんでしょうか。 ということです。 ご回答からすると出来る、ということですね。 _root.example_mc.という感じで代入してみたのですが、うまくかからなかったもので。 こちらのタイプミスなどによるケアレスだということがわかりました。 再度試してみて、追って結果、経過をあげたいと思います。

関連するQ&A