0

わかりました、これは私がペンダント的であるかもしれませんが、何かを行うための最良の方法を知る必要があります: (これは疑似コードであり、実際のコードではありません。実際のコードは巨大です)

基本的に、パッケージには次のようなクラスがあります。

internal class charsys extends DisplayObject {
  Bunch of Variables
  a few functions
}

次のような関数を作成したいタイムラインに追加する予定の別のクラス:

public class charlist {
  var list:Array = new Array();
  var clock:Timer = new Timer(6000);
  var temp:charsys;

  function addObj(MC:DisplayObject, otherprops:int) {
     temp=MC;
     temp.props = otherprops;
     list.push(temp)
  }

  function moveabout(e: event) {
     stuff to move the items in list
  }

  function charlist() {
     stuff to initialize the timers and handle them.
  }
}

問題は、この配列にデータを入力する私の方法はそれを行う有効な方法ですか?もっと簡単な方法はありますか?このように継承できますか?私のようにオブジェクトを渡す必要さえありますか?

(まだパッケージを書いているので、まったく機能するかどうかはわかりません)

4

2 に答える 2

0

はい、オブジェクトを関数に渡すことができますが、その関数内でそのオブジェクトを使用して何をしようとしているかに注意する必要があります。たとえば、オブジェクトのみを渡すことを計画している場合はcharsys、関数ヘッダーを次のように記述します。

function addObj(MC:charsys, otherprops:int) {

タイプは関数ヘッダーに直接入れられることに注意してください。このようにして、Flash コンパイラは多くのことを実行できるようになります。

最初に、渡されたインスタンスの有効なプロパティを参照しているかどうかを関数本体に照会します。たとえば、charsysオブジェクトにはプロパティがありませんが、propsプロパティはありpropます。この入力エラーはすぐに検出され、報告されます。また、propsたとえば int であり、それに String 値を割り当てようとすると、再度通知されます。

第 2 に、その関数をどこで使用しても、Flash コンパイラは正しい型のインスタンスが関数に渡されているかどうかを静的にチェックするため、そのサブクラスcharsysがない場合、コンパイル エラーがスローされます。charsys

そして第三に、これはあなたが関数に正しい型を提供する方法を学び、 のような動的クラスに依存しないようにするのに役立ちますMovieClip.NaNどこからともなく s が表示される、または一部の要素が表示されないなどの厄介なバグ。

このようなメソッドの一般的な使用法について - それらは実際に、対応する値に基づいて可能なすべてのプロパティを変更する範囲で、1 つのクラスの類似オブジェクトのグループを作成/管理するために使用できます。プロパティのデフォルト値が必要になる場合もありますが、これらの関数を使用して、追加情報に基づいてそれらをわずかに (またはそれほど大きくなく) 変更することができます。たとえば、すぐに配置できるTextFieldオブジェクトを生成する関数があり、書式設定と変更されたデフォルト設定 (multiline=trueなど) が完了し、必要に応じて整列および配置されます。クラスのデフォルト値を変更することはできないためTextField、このような関数を使用して新しいテキスト フィールド オブジェクトを必要に応じて調整できます。

お役に立てれば。

于 2013-04-09T11:10:35.830 に答える
0

これは機能しますが、プロパティを渡して別のクラスにプロパティの割り当てを行わせるのではなく、add メソッドに渡す前に charsys オブジェクトのプロパティに値を割り当てると思います。共通のプロパティがいくつかある場合は、charsys クラス定義にデフォルトを設定するか、addObj メソッドでリテラルを設定できます。

于 2013-04-09T08:37:49.323 に答える