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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     クラス内の変数受け渡し
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
NaokiMX
Åê¹ÆNo.16917
投稿日時: 2005-4-26 16:32
新米
居住地:
投稿: 9
使用環境:
WinXP, FlashCS3
FlashPlayer10
クラス内の変数受け渡し
いろいろと考えたのですが、限界です。助けてください
MCが自動的にブラウザの中央にくるようなクラスを生成したいのですが、
クラス変数 $ResizeObjの持つプロパティを
center_mc.onEnterFrame = function() {
}内から参照したいのですがどうすればよいのでしょうか?
現在のtrace(SetGetRePlaceProperty.numStageXhalf);
からは参照できるのですが・・・
かなりソースが間違っていると思いますが、お願いします。


class as.RePlace {
private var $ResizeObj:Object;
private var $ResizeListener:Object;
//
//コンストラクタ関数
function RePlace() {
}
function get SetGetRePlaceProperty():Object {
return this.$ResizeObj;
}
function set SetGetRePlaceProperty(ResizeObj:Object):Void {
this.$ResizeObj = ResizeObj;
}
//
//Swfのセンター揃え
function SetResize(center_mc:MovieClip, numPlusX:Number, numPlusY:Number, numSpeed:Number):Void {
$ResizeObj = new Object();
$ResizeObj.numStageXhalf = Stage.width/2;
$ResizeObj.numStageYhalf = Stage.height/2;
$ResizeObj.numPointX = $ResizeObj.numStageXhalf-(center_mc._width/2);
$ResizeObj.numPointY = $ResizeObj.numStageYhalf-(center_mc._height/2);
$ResizeObj.numDistanceX = center_mc._x-$ResizeObj.numPointX+numPlusX;
$ResizeObj.numDistanceY = center_mc._y-$ResizeObj.numPointY+numPlusY;
//ステージサイズ等;
//
//ブラウザがリサイズされたら
$ResizeListener = new Object();
$ResizeListener.onResize = function() {
trace("-- リサイズ実行");
trace(SetGetRePlaceProperty.numStageXhalf);
center_mc.onEnterFrame = function() {
//X座標
if (Math.abs(SetGetRePlaceProperty.numDistanceX)>1) {
center_mc._x = Math.round(center_mc._x-(SetGetRePlaceProperty.numDistanceX/numSpeed));
} else {
center_mc._x = Math.round(SetGetRePlaceProperty.numPointX);
}
//Y座標
if (Math.abs(SetGetRePlaceProperty.numDistanceY)>1) {
center_mc._y = Math.round(center_mc._y-(SetGetRePlaceProperty.numDistanceY/numSpeed));
} else {
center_mc._y = Math.round(SetGetRePlaceProperty.numPointY);
}
if ((center_mc._y == Math.round(SetGetRePlaceProperty.numPointY)) && (center_mc._x == Math.round(SetGetRePlaceProperty.numPointX))) {
delete center_mc.onEnterFrame;
trace("-- リサイズ終了");
}
};
};
Stage.addListener($ResizeListener);
}
}
kool_it
Åê¹ÆNo.16919
投稿日時: 2005-4-26 17:50
常連
居住地: 東京
投稿: 92
使用環境:
win7::Win2K:Flash CS5.5:
10.7:Flash CS5.5:
Re: クラス内の変数受け渡し
実際のところ、これだけでは全くわかりません。。
こちらで見たところ、30行目のtrace(SetGetRePlaceProperty.numStageXhalf);
はundefinedです。(スコープが違う)(flash7 + as2.0)
まあ ちょっと読み下しただけなので、間違っていたらごめんなさい。

解決方法としては単純に
??前略
//ステージサイズ等;
center_mc.replace = this; //Replaceクラスをcenter_mcに入れる

//
//ブラウザがリサイズされたら
$ResizeListener = new Object();
??中略??
center_mc.onEnterFrame = function() {
//X座標
if (Math.abs(this.replace.SetGetRePlaceProperty.numDistanceX)>1) {
center_mc._x = Math.round(center_mc._x-(this.replace.SetGetRePlaceProperty.numDistanceX/numSpeed));
} else {
??後略 以下同様にして変更

お見受けしたところ、スコープがちょっとぐちゃぐちゃになっていて見難いです。
多少面倒ではありますが、明示的thisをつけるように習慣づけることをお勧めします。


----------------
---------------------------------------
ActionScript Junky!
---------------------------------------

NaokiMX
Åê¹ÆNo.16920
投稿日時: 2005-4-26 18:13
新米
居住地:
投稿: 9
使用環境:
WinXP, FlashCS3
FlashPlayer10
Re: クラス内の変数受け渡し
すみません。ちょっと新しい単語なども出来てきて、こんがらがっています。
「//Replaceクラスをcenter_mcに入れる」
というのは、どういう意味でしょうか?
Replaceクラスの変数やメソッド、関数をcenter_mcでも使用できるようにするということでしょうか?

また、スコープとはいったいなんでしょう?たまに聞くのですが、まったく理解していません。
ほんとに初心者で申し訳ないですが、教えてください。
kool_it
Åê¹ÆNo.16921
投稿日時: 2005-4-26 18:52
常連
居住地: 東京
投稿: 92
使用環境:
win7::Win2K:Flash CS5.5:
10.7:Flash CS5.5:
Re: クラス内の変数受け渡し
正確には「Replaceクラスのインスタンスをcenter_mcのreplaceという変数に代入」でしょうか(間違っていたら だれか訂正お願いします。)
引用:
Replaceクラスの変数やメソッド、関数をcenter_mcでも使用できるようにするということでしょうか?

そういうことです。

参考  MovieClipLoader リスナーからクラスメソッドの呼び出し

スコープの方はお答えしたいのですが、ちょっと時間が無いので。。
(仕事している合間に書いているもので・・・)

まずはfashのヘルプに結構いろいろ書いてあります。ご一読ください
ActionScriptの基礎>ベストプラクティスの使用>ActionScriptのコーディング規則>スコープの使用
ActionScriptの基礎>変数について>変数のスコープ設定と宣言
(項目はMX2004です)

こちらは参考で
クラス内の変数について
ちょっと難しいかもしれませんが、、、

尻切れトンボですいません。。。


----------------
---------------------------------------
ActionScript Junky!
---------------------------------------

NaokiMX
Åê¹ÆNo.16923
投稿日時: 2005-4-26 22:44
新米
居住地:
投稿: 9
使用環境:
WinXP, FlashCS3
FlashPlayer10
Re: クラス内の変数受け渡し
参考まで用意してもらって、ありがとうございます

参考を見てわかったのですが、
ようするに、class内の階層(パス)をcenter_mc.replaceとして保存しておく。ということですね!あれ、違うかな?リスナー以外でも(インナーfunction時とか)必要になると思いますので、もうすこし自分も検証してみます。

スコープの方は、教えてもらった箇所を読みまくってみます。

oopの習得ということで、最近勉強しているですが、
全体的に知識不足ということですね。トホホ・・・

丸一日悩んでたので、助かりました!ありがとうございます
ひろゆき
Åê¹ÆNo.23127
投稿日時: 2006-1-25 20:27
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: クラス内の変数受け渡し
フォーラムが移動しているので、リンク切れになっていました。

いまは、こちらにあります。
参考「MovieClipLoader リスナーからクラスメソッドの呼び出し


----------------
質問する際は、回答者に具体的な情報を与えてください。

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

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