問答収集 カテゴリ:Flashプログラミング
現在のスレッド一覧 / 新規に質問を投稿
レス数:5 / 状態:解決済み / No:66 / ATOM
1 名前:ストロボ 日付:2010/09/29(水)22:45:38 ID:rQm4uW0LW/Fd
こんにちは。
こちらのサイトでAction Scriptを勉強させて頂いております。
一通り拝見したのですがこのあたりの事はあまりなかったので質問致します。

現在私はAction Scriptの練習も兼ねてブロック崩しでも作ろうとしています。
製作環境は「Adobe Flash CS4」のAS3.0です。

以前この投稿掲示板で、ライブラリにあるシンボルをクラスにし、
そのクラスをnew命令にかける事でインスタンス化できる事を教えて頂きました。
- - - - - - - - - -
var boll = new Ball();//Ballはライブラリで用意しておく
- - - - - - - - - -
今回はそのように作成したインスタンスの制御方法についてご教示ください。

静的に配置したインスタンスは直接インスタンス名がつけられるので
問題ありません。
一方、動的に配置するとインスタンス名が付いているのかすら分からない状況です。
私は動的な配置を、ボールの配置やあるブロックを壊した時に3つほど新たな玉を出現させ
それぞれ別の移動をさせる、などの用途に使用したいです。
座標の移動や反射の判定などはインスタンス名がないとできませんよね。

皆さまのお力を拝借したい所存です。
2 日付:2010/10/05(火)19:25:29 ID:qPr0YUEfJmUW
インスタンスを、Flash 画面に表示するためには、
何らかの表示リストに登録する必要があります。ステージに登録する例です。
------------------------------------------------
var mc:Ball = new Ball();
stage.addChild(mc);
------------------------------------------------


そして、インスタンスの制御ですが、
MovieClip クラスのメンバーを利用します。
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/display/MovieClip.html

基本的なメンバーは、
MovieClip クラスの派生元である DisplayObject クラスにまとめられています。
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/display/DisplayObject.html

例えば、座標を (x:50 y:100)にしたい場合です。
------------------------------------------------
var mc:Ball = new Ball();
stage.addChild(mc);

mc.x = 50;
mc.y = 100;
------------------------------------------------
3 日付:2010/10/05(火)19:25:41 ID:qPr0YUEfJmUW
そしてインスタンス名ですが、
AS1.0では、必ず名前を付ける必要がありましたが
AS3.0では、名前を付けなくても制御は可能です。

例えば、AS1.0では、
_root.aa.bb.cc のムービークリップの座標を変更したい時に
ドットシンタックスを使って以下のように記述できました。
------------------------------------------------
_root.aa.bb.attachMovie("Ball","cc",0);
_root.aa.bb.cc._x = 50;
_root.aa.bb.cc._y = 100;
------------------------------------------------

また、参照を利用して記述する事もできました。
------------------------------------------------
var mc = _root.aa.bb.attachMovie("Ball","cc",0);
mc._x = 50;
mc._y = 100;
------------------------------------------------

AS3.0では、new 演算子を使ってインスタンス化した時点で
参照を得られているので、そのままメンバーにアクセスできます。
------------------------------------------------
var mc:Ball = new Ball();
mc.x = 50;
mc.y = 100;
------------------------------------------------
4 名前:ストロボ 日付:2010/10/06(水)22:51:38 ID:rQm4uW0LW/Fd
なるほど…。
varを使っているのでそれで宣言した変数を利用すれば良いのですね。
丁寧にお答え頂いてありがとうございます。

 実を言いますと、Flashでゲームを作ってみたいと思ったのは随分前です。
まだFlashは手元になく、とりあえずどんなものか調べようと、インターネットでAdobe Flashのヘプルページを探したのですが見つける事ができませんでした。
本屋に行く度Flashの本を探しましたが、当時の私はFlashのプログラム名をAction Scriptだと言う事も知らなかったので、フラッシュアニメーションの本しか目にとめる事ができませんでした。
アドビのソフトは高いという事もあり、専門的な事なんだろうと思っていました。
 その後しばらくFlashの興味は薄れていたのですが、CS4が出た時アドビ製品を購入した事をきっかけにまたFlashへの興味が再燃しました。
今度こそはと色々探しているうちにこちらのサイトへたどり着きました。
綺麗にまとまっていて何てわかりやすいのだろうと感服しました。
 しかし当然わからない事が多く少しでも理解しようと、AS3.0項目の最低限必要だと思われる事(ローカル環境でのゲームプレイ)、AS1.0の所にあるアルゴリズムの所をノートにまとめました。
自己解決できるよううんうん唸りながら考えていましたがどうしても分からない!
そんな経緯で先日質問致しました。そして今回もさせて頂いたのですが…
リンク先へ飛んでみると長年探していたヘルプページでした。やはりASについて書いてありましたね。

私のような初心者はまずこれを読み下すべきだろうと思いました。
そして同時に、こちらのサイトのありがたみが痛いほどわかりました。
今後は、あの長い分と戦うなかで疑問に思う事を質問したいと思います。
その折はまた返答頂けますようお願い申し上げます。

サイトの制作関係者様、ならびにFlash玄人の皆様、毎度丁寧な返答、誠にありがとうございます。
場違いな発言で大変恐縮ですが、これを私のお礼の言葉とさせていただきます。
5 名前:状態変更 日付:2010/10/06(水)22:53:43 ID:rQm4uW0LW/Fd
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 :
解決済み
投稿開始日 :
2010/09/29(水)22:45:38
投稿終了日 :
2010/10/06(水)22:53:43
投稿者 :
ストロボ
レス総数 :
5
スレッド番号 :
66
MondoCollectionSystem ver.0x00020000 by Hakuhin