トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     pushButton のプロパティー取得
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yomogi01
Åê¹ÆNo.1562
投稿日時: 2003-11-24 12:55
新米
居住地: 奈良県
投稿: 13
使用環境:
Windows2000Pro
FlashMX 2004
pushButton のプロパティー取得
yomo と申します。
actionScript 初心者です。先ほど同じ内容を投稿したのですが掲載されていないようですので再送してみます。もしダブりになっていたら申し訳ありません。
pushButton を複数画面に貼り付けた画面のテストを行っているのですが、on( rollOver ) でテキストの文字色を取得したいのですが、どのうようにすればいいのでしょうか?
setStyleProperty では設定しかできないようですし、
[インスタンス].property.textColor でも undefinded になってしまいます
ひょっとして、pushButton のサブクラスにgetStyleProperty メソッドを作成するような感じでしょうか?
雲上人のアドバイスをお願いできますでしょうか?
野中文雄
Åê¹ÆNo.1569
投稿日時: 2003-11-24 13:52
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: pushButton のプロパティー取得
確かに、getStylePropertyとかgetStyleFormatのようなメソッドは見当たりませんね。
引用:
yomogi01さんは書きました:
pushButton を複数画面に貼り付けた画面のテストを行っているのですが、on( rollOver ) でテキストの文字色を取得したいのですが、どのうようにすればいいのでしょうか?

コンポーネントの中身を、直接調べるしかないかもしれません。PushButtonコンポーネントの場合には、以下のステートメントでラベルの色を取得できます。
// PushButtonインスタンス
// MovieClipアクション
on (rollOver) {
	trace(this.fLabel_mc.labelField.textColor);
	// または
	my_fmt = this.fLabel_mc.labelField.getTextFormat();
	trace(my_fmt.color);
}

引用:
setStyleProperty では設定しかできないようですし、
[インスタンス].property.textColor でも undefinded になってしまいます

可能であれば、その方が望ましいでしょう。
引用:
ひょっとして、pushButton のサブクラスにgetStyleProperty メソッドを作成するような感じでしょうか?


----------------
 

youich
Åê¹ÆNo.1570
投稿日時: 2003-11-24 13:55
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: pushButton のプロパティー取得
引用:

setStyleProperty では設定しかできないようですし、
[インスタンス].property.textColor でも undefinded になってしまいます
ひょっとして、pushButton のサブクラスにgetStyleProperty メソッドを作成するような感じでしょうか?

ホントだ、あってもよさそうなのに、getStylePropertyってないですね?
FPushButtonのtextのスタイルはtextStyleオブジェクトでもってるので
こんな感じになりますでしょうか。
FPushButtonClass.prototype.getStyleProperty = function(propName){
	if(propname.substring(0,4)=="text"){
		var textProp = propName.subString(4, propName.length);
		return this.textStyle[textProp];
	}
	return this.styleTable[propName].value;

}
//例
myFPushButton.setStyleProperty("textColor",0xff0000);
myFPushButton.setStyleProperty("shadow",0x0000ff);
myFPushButton.setClickHandler("getTextColor",this);
function getTextColor(obj){
	var n = (obj.getStyleProperty("textcolor"));
	trace(new Number(n).toString(16));
	n = obj.getStyleProperty("shadow");
	trace(new Number(n).toString(16));;
}


----------------
- yo

yomogi01
Åê¹ÆNo.1577
投稿日時: 2003-11-24 15:16
新米
居住地: 奈良県
投稿: 13
使用環境:
Windows2000Pro
FlashMX 2004
Re: pushButton のプロパティー取得
Fumioさん、Yoichiさんどうもありがとうございます。
ます、Fumioさんの「コンポーネントの中身を、直接調べる」方法でやってみます。
その後、youichさんのクラス定義を拡張する方法でやってみたいと思います。
=====以降は別件になりますが、
Flash の継承関係は理解できていませんこの点ご容赦を。
FPushButton.prototype.xxxx = function() {
}
とした場合、この処理以降のFPushButtonインスタンスは全てそのxxxメソッドを持ってしまう。
この拡張は開発環境をインストールしたマシンでは常にそうなってしまう。という考えでいいのでしょうか?
もし、そうだとしたら、一旦、

myPushButton.prototype = new FPushButton();

としておいて、
myPushButton.prototype.xxx = function() {
++++
}
とするのが安全なのかな?
って、YouichさんのFPushButtonClassってのはそういう意味でかかれているのでしょうか?もしそうだとしたらすみませんです


youich
Åê¹ÆNo.1578
投稿日時: 2003-11-24 15:29
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: pushButton のプロパティー取得
引用:

FPushButton.prototype.xxxx = function() {
}
とした場合、この処理以降のFPushButtonインスタンスは全てそのxxxメソッドを持ってしまう。

ですね。
引用:

この拡張は開発環境をインストールしたマシンでは常にそうなってしまう。という考えでいいのでしょうか?

そのムービーのライブラリーからFPushButtonClassのコードを書き換えてもそのムービーだけですし、、より簡単に_rootの第一フレームにでも

FPushButtonClass.prototype.getStyleProperty = function(propName){
	if(propname.substring(0,4)=="text"){
		var textProp = propName.subString(4, propName.length);
....

とやってもいいです、同様に個別のインスタンスだけに

myFPushButton.getStyleProperty = function(propName){
	if(propname.substring(0,4)=="text"){
		var textProp = propName.subString(4, propName.length);
....

とされてもよろしいですね。どれも開発環境全体には影響ないです?。


----------------
- yo

野中文雄
Åê¹ÆNo.1579
投稿日時: 2003-11-24 15:37
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: pushButton のプロパティー取得
FPushButtonクラス自体に、メソッドを追加していることになります。
引用:
yomogi01さんは書きました:
FPushButton.prototype.xxxx = function() {
}
とした場合、この処理以降のFPushButtonインスタンスは全てそのxxxメソッドを持ってしまう。

ただ、クラス定義は、コンポーネントのシンボルと関連づけられます。おおもとのコンポーネント自体を修正しないかぎりは、そのシンボルを[ライブラリ]にもっている個々のムービーにのみコードが反映されます。つまり、ムービーの[ライブラリ]パネル内で修正を加えれば、そのムービーのみの動作になります。
引用:
この拡張は開発環境をインストールしたマシンでは常にそうなってしまう。という考えでいいのでしょうか?

ということで、ActionScript 1.0では、直接クラスのprototypeにメソッドを追加することが多く行われてきました。

ActionScript 2.0では、クラスは開発環境にライブラリとして作成することが可能になります。したがって、サブクラスによる拡張の方が、一般的になるでしょう。もちろん、ActionScript 1.0でも、サブクラスを分けて、元のクラスには直接手を加えないという管理をされることも意味があります。
引用:
myPushButton.prototype = new FPushButton();

としておいて、
myPushButton.prototype.xxx = function() {
++++
}
とするのが安全なのかな?


----------------
 

youich
Åê¹ÆNo.1590
投稿日時: 2003-11-24 20:40
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: pushButton のプロパティー取得
引用:

ActionScript 2.0では、クラスは開発環境にライブラリとして作成することが可能になります。したがって、サブクラスによる拡張の方が、一般的になるでしょう。もちろん、ActionScript 1.0でも、サブクラスを分けて、元のクラスには直接手を加えないという管理をされることも意味があります。

そうですね、そういう意味ではメリットがありますよね。
AS2.0ではjavaプログラマーなら違和感が少ないかわりに
AS1.0の経験者には戸惑いがでるというところでしょうか。

引用:
myPushButton.prototype = new FPushButton();

としておいて、
myPushButton.prototype.xxx = function() {
++++
}
とするのが安全なのかな?

しかしMXのコンポーネントでこれをやってみるのはややこしいですね。
下記のコードでFPushButtonを拡張しようと試してみましたら、
#initclip 10
MyButtonClass = function(){
	this.init();
}

MyButtonClass.prototype = new  FPushButtonClass();

Object.registerClass("MyButtonSymbol",MyButtonClass);

MyButtonClass.prototype.init= function(){
	//super.init.apply(this);
	super.init();
}

MyButtonClass.prototype.getStyleProperty = function(propName){
	if(propname.substring(0,4)=="text"){
		var textProp = propName.subString(4, propName.length);
		return this.textStyle[textProp];
	}
	return this.styleTable[propName].value;
}


#endinitclip

無限ループがでてうまくいきませんでしたので、
結局FPushButtonClass内のsuper.?と親(FUIComponentClass)のメソッドを呼ぶように記述されているところを
FUIComponentClass.prototype.?.apply(this);
等と書き換えるとOKでした、、、
これはいわゆるsuperのバグでしたでしょうか?

http://park10.wakwak.com/~suie/MyPushButton.sit


----------------
- yo

ゲスト
Åê¹ÆNo.1595
投稿日時: 2003-11-25 3:09
Re: pushButton のプロパティー取得
ごぶさたしとります tommy です

引用:


しかしMXのコンポーネントでこれをやってみるのはややこしいですね。
下記のコードでFPushButtonを拡張しようと試してみましたら、
#initclip 10
MyButtonClass = function(){
	this.init();
}

MyButtonClass.prototype = new  FPushButtonClass();

Object.registerClass("MyButtonSymbol",MyButtonClass);

MyButtonClass.prototype.init= function(){
	//super.init.apply(this);
	super.init();
}

MyButtonClass.prototype.getStyleProperty = function(propName){
	if(propname.substring(0,4)=="text"){
		var textProp = propName.subString(4, propName.length);
		return this.textStyle[textProp];
	}
	return this.styleTable[propName].value;
}

これはいわゆるsuperのバグでしたでしょうか?

http://park10.wakwak.com/~suie/MyPushButton.sit


そうらしいっすね
FPushButton 久しぶりに見ちゃいましたー
ややこしいっすね
FPushButton#setSize > setLabel > txtFormat > setSize ...
となっちゃうんでしょうかね


// これはなくても動く
MyButtonClass2.prototype.setSize= function(w, h){
	super.setSize(w, h);
}
// こっちは必要
MyButtonClass2.prototype.txtFormat= function(){
	super.txtFormat();
}


とすると いけるような気がしますですが
これじゃ 拡張してんだかなんだかわかりませんよね?

ではでは
youich
Åê¹ÆNo.1641
投稿日時: 2003-11-26 1:28
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: pushButton のプロパティー取得
引用:

icutommyさんは書きました:
ごぶさたしとります tommy です

とみさん、見てくれましたか、どうもありがとうです?。

引用:

そうらしいっすね
FPushButton 久しぶりに見ちゃいましたー
ややこしいっすね
FPushButton#setSize > setLabel > txtFormat > setSize ...
となっちゃうんでしょうかね

あ、そこでしたか、

私、無限ループ -> super臭い。。でFPushButtonのコード
"super" -> "FUIComponentClass.prototype"
検索置換で放ってしまいました。(笑)


----------------
- yo

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops