• 締切済み

AS3.0のクラス定義に関して質問です。

クラス定義についていまいちしっくりこないというか、完全に理解しきれていません。 僕が悩んでいるのは、以下の事です。 ステージ上のインスタンス1個1個に、全く別のクラスをそれぞれ定義したいのですが、その方法がわかりません。 そのインスタンスを配置しているレイヤーのタイムラインに直接コードを書くと、「未定義である可能性が高いメソッド addFrameScript の呼び出しです。 」とでてしまい、コードを適用できません。 今はMain.asというASファイルを作り、プロパティのクラスというところ(こういうのがドキュメントクラス?)に『Main』と入力して、そのFLASH上のインスタンス1個だけに対して定義しています。 そのほかのインスタンスにも違う名前で違う処理のASファイルをクラス定義する方法が知りたいです。 何分AS3.0初心者なものですので、とんちんかんなことを言ってるかも知れませんが、 何卒ご教示のほどお願い申し上げます。

  • Flash
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

ドキュメントクラスはMovieClip拡張クラスじゃないと フレームってもんが存在しません だから『addFrameScriptがありません』なんて言われるワケです フレーム使うドキュメントクラスに使うクラスには クラス宣言のところで class Main extends MovieClip ってやっとくのがお約束 蛇足ながら、1フレームだけしか必要ない場合に Sprite拡張でドキュメントクラスを作ったりします わりとこっちの使い方の方が主流かも

関連するQ&A

  • AS3.0のクラス定義に関して質問です。

    クラス定義についていまいちしっくりこないというか、完全に理解しきれていません。 僕が悩んでいるのは、以下の事です。 ステージ上のインスタンス1個1個に、全く別のクラスをそれぞれ定義したいのですが、その方法がわかりません。 そのインスタンスを配置しているレイヤーのタイムラインに直接コードを書くと、「未定義である可能性が高いメソッド addFrameScript の呼び出しです。 」とでてしまい、コードを適用できません。 今はMain.asというASファイルを作り、プロパティのクラスというところ(こういうのがドキュメントクラス?)に『Main』と入力して、そのFLASH上のインスタンス1個だけに対して定義しています。 そのほかのインスタンスにも違う名前で違う処理のASファイルをクラス定義する方法が知りたいです。 何分AS3.0初心者なものですので、とんちんかんなことを言ってるかも知れませんが、 何卒ご教示のほどお願い申し上げます。

  • AS3.0・自作クラス内でフレームレート変更

    タイトルの通り自分で作った自作クラス内でフレームレート変更の操作をしたいのですが、上手くいかず困っています。 自作クラス内でstage.frameRateにアクセスしようとするとエラーをはいてしまいます。 自作クラス:A.as(省略してあります) package { import flash.display.*; public class MyClass { private var f:int = stage.frameRate; public function MyClass() { //... } } } -- ・メインとなるクラスからしかstageにはアクセスできないのでしょうか? 自分としては、このクラスでボタンによってフレームレートを変更する機能をつけたいので、このような書き方をしたいのですが・・・。 ・また、このクラス内でaddChilde()するときもエラー(1180: 未定義である可能性が高いメソッド addChild の呼び出しです。)をはいてしまうのですが、これはこのクラスのインスタンスを生成するときに、addChildするための場所(?)を引数として持ってこないといけないのでしょうか? わかる方ご回答よろしくお願いします。

    • ベストアンサー
    • Flash
  • オープンクラスで再定義時に別で定義されたメソッドの

    オープンクラスで再定義時に別で定義されたメソッドの呼び出しについてです。 ある編集不可能なクラス Hoge の fuga メソッドの戻り値によって、新たなメソッド piyo を定義したいと考え、次のコードを試してみました。 irb(main):001:0> class Hoge irb(main):002:1> def fuga irb(main):003:2> 1 irb(main):004:2> end irb(main):005:1> end => :fuga irb(main):006:0> irb(main):007:0* class Hoge irb(main):008:1> if self.fuga == 1 irb(main):009:2> def piyo irb(main):010:3> puts "foobarbaz" irb(main):011:3> end irb(main):012:2> end irb(main):013:1> end NoMethodError: undefined method `fuga' for Hoge:Class from (irb):8:in `<class:Hoge>' from (irb):7 from /usr/bin/irb:11:in `<main>' この目的の場合、8~12行目はどのような記述をすれば良いのでしょうか。 なお、Hoge のインスタンス作成後に特異メソッドとして piyo を追加のが都合上、難しい状態です。 バージョンは ruby 2.1.5p273 です。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • 外部クラス(カスタムクラス)からテキストフィールドに表示させたい。

    外部クラス(カスタムクラス)からテキストフィールドに表示させたい。 環境はFLASH CS3でActionScript3.0です。 例えばドキュメントクラス(Main.as)があり、そこからカスタムクラス(Test.as)をImportしています。 ステージにはテキストフィールド(インスタンス名tf)があり、Test.asの中の変数の値などをtfに表示させたいのです。 Test.asの中で、 var disp = "OK"; tf.text = disp; などを試しましたが 「1120: 未定義のプロパティ tf へのアクセスです。」と表示されます。 stage.tf.textやroot.tf.textなど試しましたが全てエラーとなってしまいます。 分かる方は教えて欲しいです。宜しくお願いします。

    • ベストアンサー
    • Flash
  • FlashAS3でのカスタムクラスについて質問です。

    FlashAS3でカスタムクラスを作りたいのですが、 stage上に置いたインスタンスを指定するにはどうしたら良いでしょうか。 例えばtest_mcというインスタンスがステージにあるとして ドキュメントクラスではそのままtest_mcが使えますが、 カスタムクラスで使うにはどうしたら良いかわかりません。

    • ベストアンサー
    • Flash
  • 外部クラスからステージへのaddChild()メソッドの利用について

    いつもお世話になります。 ActionScript3(以下AS3)で記述したスクリプトを外部クラス化したいと考えており、FLAファイル側で外部クラスsample.asクラスをnew sample();で呼び出し、外部クラス内で生成したSpriteをステージに追加する為にaddChild(basebg);と指定するとコンパイルエラーとなり、「1180:未定義である可能性が高いメソッドaddChildの呼び出しです。」と表示されます。 外部クラスにはbasebgに追加するaddChild()メソッドを複数使用していますが、それらはエラーが出ていません。 外部クラスからステージにオブジェクトを追加するにはどのような記述が必要でしょうか? 初歩的なミスかもしれませんが、ご教授いただけると幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • 抽象クラスからオーバーライドについて

    EclipseでJavaを勉強始めました。 抽象クラスからオーバーライドするところで質問致します。 抽象クラスとして、「面積を計算する」というメソッドをもつDiagramクラスを定義しました。それを継承して、「四角形の面積を計算する」というメソッドをもつSquareクラスと、「三角形の面積を計算する」というメソッドをもつTriangleクラスを定義しました。 Squareクラス、Triangleクラスからインスタンスを生成して、四角形、三角形の面積をコンソールに表示させるという簡単なプログラムです。 このとき、main関数と3つのクラスの関係についてお尋ねします。 (1)iagram.java、Square.java、Triangle.javaそれぞれにクラス定義とmain関数を持たせるパターン public abstract class Diagram { // 面積計算定義(抽象メソッド) public static void main(String[] args) { } } public class Square extends Diagram{ //四角形の面積の計算定義 public static void main(String[] args) { //四角形の面積の計算と表示 } public class Triangle extends Diagram{ //三角形の面積の計算定義 public static void main(String[] args) { //三角形の面積の計算と表示 } (2)sample.javaというファイルにまとめ、その中にこの3つのクラス定義とmain関数を一つ持たせるパターン public class sample { public static void main(String[] args) { //四角形の面積の計算と表示 //三角形の面積の計算と表示 } } abstract class Diagram { // 面積計算(抽象メソッド)定義 } class Square extends Diagram{ //四角形の面積の計算定義 } class Trapezoid extends Diagram{ //三角形の面積の計算定義 } この二通りを考えて、どちらも実行できたのですが、どちらの方がJavaらしいプログラムと思われますでしょうか?

    • ベストアンサー
    • Java
  • AS3.0 動的に追加したインスタンスについて

    以下のようなコードで、ブロック崩し的なものを作ろうとしています。 .flaファイルのステージ上には、プレイヤーが操る左右に動く棒状の自機があります。 ボールはステージにあらかじめ配置せずに、コードの中でnew演算子で呼び出して、最初は自機の子要素として自機にくっついており、スペースキーを押すとボールがステージの子要素に変わり、発射されるようにしたいのですが、以下のコードだとエラーになります。 ~略~ public class Main extends MovieClip { var vx:int; public function Main():void { init(); } function init():void { vx = 0; var ball:Ball = new Ball(); ←ここについての質問です player.addChild(ball); ball.x = 0; ball.y = 0; stage.addEventListener('keyDown',onKeyDown); stage.addEventListener('keyUp',onKeyUp); stage.addEventListener('enterFrame',onEnterFrame); } function onKeyDown(e:KeyboardEvent):void { if (e.keyCode == Keyboard.LEFT) { vx = -5; } else if (e.keyCode == Keyboard.RIGHT) { vx = 5; } else if (e.keyCode == Keyboard.SPACE) { stage.addChild(ball); ←この行でエラーが出ます。 ball.x = player.x; ball.y = player.y; } } ~以下略~ この場合、「1120: 未定義のプロパティ ball へのアクセスです。」と、エラーが出てしまいます。 ですが、ボールをステージにあらかじめ配置しておくと、うまくいきます。 子要素を変えなくても作れるとは思うんですが、 あえてそうするなら、new演算子で動的に配置したインスタンスの場合、 どのようなコードを書いたらよいでしょうか? ご教授お願いします。

    • ベストアンサー
    • Flash
  • ファイルからの入力 Scannerクラス

    ファイルの内容を読み込むプログラムをJavaで作成しています。 Scannerクラスを利用するため、以下のようにimport宣言しました。 package bc; import java.util.Scanner; class FileScanner {  コンストラクタ{   }  メソッド{   }    :    :  mainメソッド{   } } という感じで書いているのですが、この場合のメソッド名は、 Scannerクラスで定義されている名前でないとダメなのでしょうか? 自分で作った名前でメソッドを定義したのですが、 Scannerクラスで定義されていません。 というようなエラーが返ってきてうまくいきません。 どなたか、ご教授くださいm(_ _)m

    • ベストアンサー
    • Java
  • インスタンス変数とクラス変数の違い

    1つのクラスオブジェクト内のインスタンス全てで共有できる クラス変数 @@a と、 同じインスタンス内であればメソッドの定義を越えてその値を 参照したり、変更したりできるインスタンス変数 @a のスコープの違いをお手すきでしたらご指導願えませんか? あとクラス変数にはセッターやゲッター等のアクセスメソッドを 設定できるんですか? いろいろ知りたいです。

    • ベストアンサー
    • Ruby

専門家に質問してみよう