- ベストアンサー
ActionScriptクラスのメンバ変数のアクセスについて
- ActionScriptのクラスでメンバ変数へのアクセス方法について説明します。
- コンストラクタ関数で値が正しく渡されているにもかかわらず、moving関数でメンバ変数の値を取得できない現象が発生しています。
- メンバ変数へのアクセス方法を確認し、正しい書き方を行う必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- actionscript2のクラスの中の書き方について
Flash ActionScript2のクラスの中の書き方について悩んでいます。 クラスの中にMcを定義するものですがthis.mct.onPressのところで class testAの中の_move()が実行できません。いろいろ試してみました がうまく実行できませんでした。なにかいいやり方はないでしょうか? よろしくお願いします。 class testA{ var mct:MovieClip; function testA(mct:MovieClip){ this.mct = mct; this.mct.onPress = function(){ _parent._move(); } } function _move(){ this.mct.onEnterFrame = function(){ } } }
- ベストアンサー
- Flash
- function内で変数 this[lcr+"_map"]を使いたい
var lcr = "Left"; map(lcr); function map(lcr) { var Left_map = new Array("ba","rc","ba","re","be","wa"); trace(this[lcr+"_map"]);// undefined trace(Left_map);//ba,rc,ba,re,be,wa } function内で this[lcr+"_map"] を使いたいのですが、function内だと undefined になってしまいます。 どうすればfunction内でも this[lcr+"_map"] が使えるようになりますか? よろしくお願いします。
- ベストアンサー
- Flash
- ActionScript2.0のイベントについて
親ムービークリップに配置した子ムービークリップのイベントが実行されなくて困っています。 親ムービークリップ自体には下記のイベントを設定しています。親ムービークリップはattachMovieで動的に配置しています。 onRollOver・・・onEnterFrameを設定 onRollOut・・・onEnterFrameを削除 子ムービークリップを配置して子ムービークリックにイベントを設定しました。onEnterFrameをは実行されますが、onReleaseが実行されず困っています。 function Parent() { this.onRollOver = function() { this.onEnterFrame = function(){・・・} } this.onRollOut = function(){ delete this.onEnterFrame; } this["child_mc"].onRelease = function() { trace('a') // 実行されない } this["child_mc"].onEnterFrame = function() { trace('b') // 実行される } } ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ _root.attachMovie("Parent", "parent_mc", _root.getNextHighestDepth(), new Parent()); 子ムービークリップはオーサリングで静的にParentに配置し、プロパティでchild_mcと設定しています。 onReleaseは実行できず、そこで止まっています。 なんでも良いので教えてください。
- ベストアンサー
- Flash
- 複数ボタンの生成 - actionscript
以前複数のムービークリップを作る方法を 教えていただいたのですが、そのムービークリップ をボタンにしたいのですがうまく行きません。 for (var i = 1; i<5; i++) { _root.createEmptyMovieClip("mc"+i, i); var load_mc = _root["mc"+i]; _root.test = load_mc; var jpg = i+".jpg"; load_mc.loadMovie(jpg); i = i-1; load_mc._x = i*200; i = i+1; } onEnterFrame = function () { for(var t=1;t<5;t++){ var load_mct = _root["mc"+t]; load_mct.onPress = function(){ trace(t); } if(_xmouse>540 && _root.mc1._x<=-1) { for (var j = 1; j<5; j++) { var load_mcj = _root["mc"+j]; load_mcj._x += 10; } } if(_xmouse<10 && _root.mc1._x>=-1*((test*200)-560)) { for (var j = 1; j<5; j++) { var load_mcj = _root["mc"+j]; load_mcj._x -= 10; } } } 多分EnterFrameの中に記述するのがおかしい と思うのですが、いったいどこに記述しないと いけないのがわからないので、どなたか ご教授ください。
- ベストアンサー
- Flash
- getURLへの変数が参照されない
こんにちは。 FLASH ActionScript2の、getURLへの変数が参照されない件で困っています。 MC1をRollOverするとテキストフィールドareaにTarea1(あ)が入り、 更にMC1をクリックするとTurl1(a)のURLに飛ぶ、というスクリプトを作っています。 しかし現状ですと、RollOverはうまくいくのですが、クリックしたときのgetURLがうまくいきません。 変数「a.html」に飛ばず、「Turl1.html」に飛んでしまいます。 変数が参照されていないということなのでしょうか。 なにぶん初心者ですので、質問自体に誤りがあるかもしれませんが、ご教授頂けたらと思います。 よろしくお願いします。 ■スクリプト var Tarea0 = ""; var Tarea1 = "あ"; var Tarea2 = "い"; var Tarea3 = "う"; . . var Tarea42 = "ゆ"; var Tarea43 = "よ"; var Tarea44 = "ら"; var Turl1 = "a"; var Turl2 = "i"; var Turl3 = "u"; . . var Turl42 = "yu"; var Turl43 = "yo"; var Turl44 = "ra"; i = 0; sx = 0; for (x=0; x<45; x++) { str = "mc"+String(i); _root["mc"+i].Tarea = "Tarea"+i; _root["mc"+i].onRollOver = function() { area.variable = this.Tarea; }; _root["mc"+i].onRollOut = function() { area.variable = "Tarea0"; }; _root["mc"+i].Turl = "Turl"+i + ".html"; _root["mc"+i].onRelease = function() { getURL(this.Turl); }; i++; } ■環境 WINDOWS XP FLASH8 ActionScript2.0
- ベストアンサー
- Flash
- actionscript2のmp3再生について
as2でmp3の再生を行いたいのですが上手く動作しません。 以下、ソースになります。 ----------------------------------------------------------------------- FLASHファイルの1フレーム目 stop(); var soundUtil:common.SoundUtil = new common.SoundUtil(this); soundUtil.soundFile = ["snd1.mp3", "snd2.mp3", "snd3.mp3"]; soundUtil.startSound(); クラスファイル class common.SoundUtil{ public var soundCtl:Object; public var crrSoundNo:Number; public var soundFile:Array; public function SoundUtil(target:MovieClip) { this.soundCtl = new Sound(); this.soundCtl.attachSound("test1"); this.soundCtl.setVolume( 100 ); this.soundCtl.onLoad = loadComplete; this.soundCtl.onSoundComplete = endSound; this.crrSoundNo = 0; } // 音声スタート public function startSound():Void{ trace("startSound:::" + this.soundCtl); if (this.soundFile.length > 0){ // ※loadSoundを呼び出すとこのクラス情報が消失します this.soundCtl.loadSound(this.soundFile[this.crrSoundNo], false); } } // 音声ストップ public function stopSound():Void{ this.soundCtl.setVolume( 0 ); this.soundCtl.stop(); } // 次ファイル再生 public function nextSoundLoad():Void{ if (this.soundFile.length - 1 < this.crrSoundNo + 1){ stopSound(); }else{ this.crrSoundNo = this.crrSoundNo + 1; startSound(); } } // 音声再生終了 private function endSound():Void{ trace("endSound:::" + this.soundCtl); if (this.soundFile.length - 1 < this.crrSoundNo + 1){ stopSound(); }else{ nextSoundLoad(); } } // ファイルの読込終了 private function loadComplete(success):Void{ // ※↓this.soundCtlがundefined trace("loadComplete:::" + this.soundCtl); if (success == true) { // ※↓以下通過しています trace("success:::"); this.soundCtl.start(); } } } ----------------------------------------------------------------------- 出力ログ startSound:::[object Object] loadComplete:::undefined success::: ----------------------------------------------------------------------- ファイルの読込み完了時点でSoundオブジェクトがundefinedになってしまいます。 動作としましては、ファイルの読込みが完了し、loadCompleteが呼ばれ、読み込んだmp3ファイルを再生し、再生終了時点でendSoundが呼ばれ、次の音声ファイルを読み込み。。。という流れを望んでいるのですがloadComplete以降Soundオブジェクトがundefinedになってしまう為上手く動作しません。 有識者の方、ご回答頂けますと幸いです。 宜しくお願い致します。
- ベストアンサー
- Flash
- AS3:ルートの変数とムービークリップ内の変数について
AS3:ルートの変数とムービークリップ内の変数について ルートのタイムラインで設定した変数var RootVarがあるとして、これをあるムービークリップMCからMovieClip(root).RootVarで読み取って、MC内で何か処理をしたときMovieClip(root).RootVar++;とやってもルートのRootVarの値は変わりません。 例えば、 ■ルートのタイムライン1フレームに記述 var RootVar:uint; if(RootVar>=3){ trace("できた!!"); } ■ステージにあるムービークリップMCのタイムライン1フレームに記述 MovieClip(root).RootVar=0; var AddTimer:Timer = new Timer(1000,3); AddTimer.addEventListener(TimerEvent.TIMER,AddNum); AddTimer.start(); function AddNum(eventObject:TimerEvent):void { MovieClip(root).RootVar++; } ルートからムービークリップ、ムービークリップからルートへ変数に値を渡したり受け取ったりはできなのでしょうか? 変数の扱い方が問題なのでしょうか?よろしくお願いします。 環境:AS3、Flash CS4
- ベストアンサー
- Flash
- AS3 Flash 変数の扱い方について
質問なんですが、外部テキストをロードして完了したら イベントハンドラで数値の5を取得し、 それを別の変数に代入して保持させようと思い、 外部ASファイルのカスタムクラスのプロパティに代入したんですが上手く行きませんでした。 なのでどのようにしたら良いのか教えて頂けませんか? プログラムは以下になります。ではよろしくお願いします。 ***ASファイル*** package{ public class ImageRoadClass{ public static var number:int; // 返り値保持 private var number2:int; // 返り値保持 function ImageRoadClass(){ } public function setNumber(number:int):void{ this.number2 = number; } public function getNumber():int{ return this.number2; } } } ***flaファイル*** // インスタンス生成 var imageRoad:ImageRoadClass = new ImageRoadClass(); ・ (割愛) ・ ・ // ロード完了後のイベントハンドラ function jsonReadHandler(e:Event):void{ var json_data:String = URLLoader(e.currentTarget).data; // 読み込んだテキストをjsonオブジェクトにデコード var json_decode_data:Object = JSON.parse(json_data); // ***ここで値を外部クラスのプロパティに代入*** ImageRoadClass.number = json_decode_data[0].number; imageRoad.setNumber(json_decode_data[0].number); trace(ImageRoadClass.number); // 出力結果:5 trace(imageRoad.getNumber()); // 出力結果:5 } trace(ImageRoadClass.number); // 出力結果:0 保持できてない trace(imageRoad.getNumber()); // 出力結果:0 保持できてない
- ベストアンサー
- Flash
- MovieClip.propertyで設定したメソッドが消えてしまう
お世話になっております。 ステージ上のMovieClip my_mc があるとします。 ActionScriptは以下になります。 MovieClip.property.hogehoge = function(){ trace("hogehogehoge"); } my_mc.onPress = function(){ this.hogehoge(); } 1回目にmy_mcをクリックすると正常に『hogehogehoge』と表示されます。 しかし、クリックを何回かしているうちに何も表示されなくなります。2回目以降の時もあれば、5回目以降の時もあります。 一度表示されなくなると、それ以降は表示されません。 試しに以下のようにトレースしました。 my_mc.onPress = function(){ trace(this.hogehoge); this.hogehoge(); } 正常に表示される時は『[type Function]』と表示され、表示されなくなると『undefined』になります。 なぜ、undefined になるかがわかりません ご教授のほど宜しくお願い致します。
- 締切済み
- Flash
- 再生スライダーと連続再生について。
再生スライダーと連続再生について。 今、複数の外部swfをA.swfの置いたmcによんで 連続再生ができるものを作成しています。(01.swf<-02.swf) 再生スライダーも作ろうと、A.swfにseek_mcとbar_mcを使って設置しました。 つまみのseek_mcをドラッグしたり、動画と一緒に動いたりなどは出来たのですが、 終点までドラッグすると01.swfのはじめに戻ってしまします。 何もしなければ次のファイルをちゃんと再生してくれます。 いろいろ、入力して試してはいるのですが、まったく上手くいきません。 何かいい方法はないでしょうか?? よろしくお願いいたします。 flash8を使っています。 以下は、スライダーの置いてあるフレームに記入したASです。 また、01.swf02.swfに変更はできないので、 A.swfのフレームASを記入してgotoAnd...とenterframe にて連続再生ができるようにしてあります。 var left = this.bar_mc._x+this.seek_mc._width/2; var top = this.bar_mc._y; var right = left+this.bar_mc._width-this.seek_mc._width; var bottom = this.bar_mc._y; this.seek_mc._x = this.bar_mc._x; this.seek_mc._y = this.bar_mc._y; this.seek_mc.onPress = function() { _root.stop(); delete _root.onEnterFrame; this.startDrag(false, _root.left, _root.top, _root.right, _root.bottom); this.onMouseMove = MoveFrame; }; this.seek_mc.onRelease = function() { this.stopDrag(); var p = (this._x-_root.bar_mc._x)/(_root.bar_mc._width-this._width); _root.gamen_mc.gotoAndPlay(Math.floor(_root.gamen_mc._totalframes*p)); _root.onEnterFrame = _root.MoveSeek; delete this.onMouseMove; }; function MoveFrame() { var p = (this._x-_root.bar_mc._x)/(this.bar_mc._width-this._width); _root.gamen_mc.gotoAndStop(Math.floor(_root.gamen_mc._totalframes*p)); } function MoveSeek() { var p = _root.gamen_mc._currentframe/_root.gamen_mc._totalframes; this.seek_mc._x = _root.left+(this.bar_mc._width-this.seek_mc._width)*p; } _root.onEnterFrame = MoveSeek;
- ベストアンサー
- Flash
お礼
ご丁寧にありがとうございました。 すべて理解するまで時間がかかりますので、 取り急ぎお礼まで。 ありがとうございます!!
補足
今すべて理解しました!!! 僕の思いとおりの結果になりましたし、 細かくまで納得することができました!!! 本当に感謝です!!