0

これは、マウスオーバー効果のあるボタンを作成するときに使用する例です。

    this.buttonExample.buttonMode = true;
    this.buttonExample.useHandCursor = true;
    this.buttonExample.addEventListener(MouseEvent.CLICK,myaction);

私はAS3を初めて使用します-このコードを次のように単純化する方法はありますか?

    this.buttonExample.buttonMode = true;.useHandCursor = true;.addEventListener(MouseEvent.CLICK,myaction);

なぜそれが機能しないのですか?

4

4 に答える 4

4

それはすでにそれが得るのと同じくらい簡単です。まずは

this.buttonExample.buttonMode = true;
this.buttonExample.useHandCursor = true;
this.buttonExample.addEventListener(MouseEvent.CLICK,myaction)

よりもはるかに読みやすい

this.buttonExample.buttonMode = true;.useHandCursor = true;.addEventListener(MouseEvent.CLICK,myaction);

常に他の何よりも読みやすさを重視してください。そして第二に、

this.buttonExample.buttonMode = true; 

オブジェクトを返さないため、何も操作できません。

于 2010-05-07T10:47:30.593 に答える
4

そのパターンを頻繁に使用している場合は、ヘルパー関数を作成できます。

public function setAsButton(button:Sprite, clickHandler:Function):void {
  button.buttonMode = button.userHandCursor = true;
  button.addEventListener(MouseEvent.CLICK, clickHandler);
}

次に、どこかで呼び出します。

setAsButton(this.buttonExample, myaction);
于 2010-05-07T10:48:22.153 に答える
3

何度も入力するのが面倒だと感じた場合this.buttonExampleは、そのオブジェクトを変数に割り当て、残りのステートメントでその変数を使用するだけです。

var b : Button = this.buttonExample;
b.buttonMode = true;
b.useHandCursor = true;
b.addEventListener(...);

他の人が述べたように、withステートメントもありますが、コードが読みにくくなり、奇妙な結果につながる可能性があるため、使用は推奨されません。

with (this.buttonExample) {
  buttonMode = true;
  useHandCursor = true;
  addEventListener(...);
}

もちろん、これらの提案をチェーン割り当てなどの他のトリックと組み合わせることができます。

var b : Button = this.buttonExample;
b.buttonMode = b.useHandCursor = true;
b.addEventListener(...);

同じオブジェクトが左側のすべての変数に割り当てられるため、割り当てられた値が不変(たとえば、、数値と文字列であり、配列やその他のほとんどのオブジェクトではない) である場合にのみ、この方法で割り当てをチェーンするように十分注意してください。値が不変の場合、これは問題ではありませんが、可変の場合、次の例のように奇妙な結果になる可能性があります。truefalse

 a = b = [ ];
 a.push(1);
 b.push(2);
 trace(a); // outputs 1, 2
 trace(b); // also outputs 1, 2

この結果の理由は、abの両方が同じ配列を参照していることです。配列は変更可能であるため、オブジェクトへのアクセス方法は問題ではなく、変更されます。a変数が異なるという理由だけで、異なる配列を参照しbないでください。

次のようなことができると思うかもしれませんが、うまくいきません

// this will NOT work
var b : Button = this.buttonExample;
(b.buttonMode = b.useHandCursor = true).addEventListener(...);

と言うb.buttonMode = b.useHandCursor = trueのに加算しない.addEventListener(...)のは、代入式の値 (例: ) が左辺 (例: ) に代入さb.buttonMode = trueれる値だからです。それに追加すると、本質的に言っていることになりますが、これは明らかにあなたが望んでいるものではありません。言い換えるとtrue.addEventListener(...)true.addEventListener(...)

b.buttonMode = b.useHandCursor = false;

と同等です

b.useHandCursor = false;
b.buttonMode = b.useHandCursor;

これにより、上記の警告も明確になるはずです。

于 2010-05-07T11:25:17.787 に答える
0

withステートメントを使用できます。ただし、多くのあいまいさと不明確さにつながるため、そうすることはお勧めしません。

また、複数の割り当てを持つことができます。

this.buttonExample.buttonMode = this.buttonExample.useHandCursor = true;

これは便利な場合もありますが、読みやすくするために使いすぎないでください。


グリッツback2dos

于 2010-05-07T10:51:59.410 に答える