dポイントプレゼントキャンペーン実施中!

お世話になります。
Flash CS5 ActionScript 3.0 で作成しております。

mybuttonというカスタムクラスを作成して、toggle=trueの時に、
selectedの状態がtrue,falseの時で、色を変えたいと思い
下記のソースを作りました。
しかしながら、下記のソースでは、
ステージにmybuttonを置く→(ソースではなく、画面上から)プロパティを選択してselected=trueにした場合、起動時に※(1)を通らずに、※(2)を通ってしまい
うまくいきません。

一度起動した後は、きちんとselected=true:(1) selected=false:(2)となり、意図した
動きとなります。

目的としては、(ソースではなく、画面上の)プロパティでselected=trueで起動した
場合に(1)を通るようにしたいのですがどうしたらよいでしょうか?
※ソースでselected=trueを書くのは×です。


すみませんがよろしくお願いします。
----------------myButton.as--------------------
package
{
  import fl.controls.Button;
import fl.controls.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
public class myButton extends Button
{
var color0 : ColorTransform = new ColorTransform;OFFの色
var colorON : ColorTransform = new ColorTransform(0,0,0,0.5,1,1,1,0);ONの色
//fontとサイズの変更
var buttonLabelFormat:TextFormat=new TextFormat();
//コンストラクタ
public function myButton()
{

buttonLabelFormat.font = "MSゴシック";
buttonLabelFormat.size =8;
addEventListener(Event.CHANGE,myButton_Change);
Change();
}
public function myButton_Change(e:Event):void{
Change();
}
public function Change():void{
if(selected)
{
transform.colorTransform = colorON;※(1)
}
else
{
transform.colorTransform = color0;※(2)
}
}


}

}

A 回答 (1件)

コンストラクタ中にインスタンスメソッドを呼び出しているため、インスタンス未生成で空振りしている気がします。


loadイベントを定義して、インスタンス生成時に正しくメソッドを叩けばいいいかもしれません。

// コンストラクタ
// 常識的にはクラスおよびコンストラクタメソッドはPascalCase
public function MyButton(){
 addEventListener('load', onLoadMC);
}

public function onLoadMC(){
 addEventListener(Event.CHANGE,myButton_Change);
 Change();
}

使っているマシンにFlashがインスコされてなくて試せていません。
外していたらごめんなさい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!