メイン コーダーズルーム【スクリプト系】 クラス内の変数受け渡し | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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) まあ ちょっと読み下しただけなので、間違っていたらごめんなさい。 解決方法としては単純に
お見受けしたところ、スコープがちょっとぐちゃぐちゃになっていて見難いです。 多少面倒ではありますが、明示的thisをつけるように習慣づけることをお勧めします。
|
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です) こちらは参考で クラス内の変数について ちょっと難しいかもしれませんが、、、 尻切れトンボですいません。。。
|
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 リスナーからクラスメソッドの呼び出し」
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |