• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:呼び出し先関数内で待ちの処理)

FLASHでルービックキューブを作る際の回転処理について質問

このQ&Aのポイント
  • FLASHでルービックキューブを作る際に回転処理をする際、複数の軸を同時に回転させたいが、tweener処理が終わるまで待ち続ける方法が分からない。
  • 特定の軸を回転させるCube_Rotate関数を作成し、複数の軸を回転させるために連続して呼び出しているが、回転が同時に行われてしまうため、tweener処理が終わってから次の回転処理を行いたい。
  • 現在のコードでは、tweenflagを使用してtweener処理が終わるまで待機する方法を試しているが、while文で回りっぱなしの状態になり、タイムアウトになってしまう。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

そういえばトゥイーン対象の取得からしないといけないので Tweenerにdelayしてもらっても意味なかったんでしたね 多分この場合はsetTimeoutの方が適してます setTimeout使うとこんなカンジです http://proxy.f3.ymdb.yahoofs.jp/bc/46d18bc5_181f4/bc/f8de/%A5%EB%A1%BC%A5%D3%A5%C3%A5%AF%A5%AD%A5%E5%A1%BC%A5%D6.swf?BC.YVkLB87zdhLUr

bokechans
質問者

お礼

delayで試していたのですが、setTimeoutも勉強してみます。 timerやthreadなども出てきたので、パニック気味で検討中です。 せっかくのリンクですが、リンク先が開けません。 申し訳ございませんが、もう一度リンクを貼っていただけないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

http://takibi.ciao.jp/flash/ルービック.swf ブリーフケースってやっぱり サーバー代わりみたない 使い方はできないんですね・・残念

全文を見る
すると、全ての回答が全文表示されます。
回答No.3
全文を見る
すると、全ての回答が全文表示されます。
回答No.1

whileは待機には使えないです 普通ならsetTimeoutでもつかうとこですが せっかくtweenerにはdelayがついてるんだから Cube_Rotate にTweenerのdelayに入れる引数も 用意しておいてやれば良いと思いますよ

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PV3Dでマテリアルの動的な変更

    papervision3Dでマテリアルを動的に変更したいのですが、 どうも上手くいきません。 markerと言う別画像のplaneオブジェクトをTweenerで徐々に表して alphaが1になった時に外部の画像と切り替えたいのですが出来ませんでした。 エラーは出ず、最初の画像のままです。 Tweener.addTween(marker, { alpha:1, time:4, onComplete:function() { var image:BitmapFileMaterial = new BitmapFileMaterial(url);    marker.material = new BitmapFileMaterial(url); } また、 marker.replaceMaterialByName( new BitmapFileMaterial(url), "all"); も試してみたのですが変化ありませんでした。 まだPV3Dを始めたばかりなので初歩的な質問に なりますが、おわかりの方がいましたらご教授頂けるとありがたいです…!

    • ベストアンサー
    • Flash
  • Tweenerの繰り返しについて

    こんばんわ。 Tweenerの繰り返しについてですが、 3つの写真があり、それぞれライブラリで書き出し済みです。 そして、その3つの写真をフェードイン・フェードアウトで切り替えることに成功したのですが、その3つの写真を続けて繰り返し(無限ループ)ができません。 TweenerのonCompleteを使ってtween(myMc,i)に戻ってもスタックオーバーフローになってしまい、うまくいきません。 こちらソースになります↓ for (var i:int=1; i<=3; i++) { var mc_str:String = "photo0" + i; var myClassMc:Class = Class(getDefinitionByName(mc_str)); var myMc:MovieClip = new myClassMc(); main_mc.addChild (myMc); myMc.visible = false; myMc.name = mc_str; tween (myMc,i); } function tween (MC:MovieClip, num:Number):void { var _num:Number = num - 1; if (num >= 1) { trace (_num+"枚目通過"); Tweener.addTween(MC, { alpha:0, onComplete:function():void{MC.visible=true;},delay:1+(_num*5) }); trace (_num+"枚目終わり"); Tweener.addTween (MC, { alpha:1, transition:"linear", time:3, delay:1+(_num*5) }); trace (_num+"枚目準備完了!"); } } どうか、ご教授のほうよろしくお願いします。

    • ベストアンサー
    • Flash
  • 画面をドラッグ

    ActionScript3.0で画面をドラッグして移動させるflashを作っています。 マウスを離してからも少しだけ動くように*2.75しています。 しかしhoge_mcが画面外に出た時にif文やflagを使って止めようとすると進む力が残っているっぽくて確実に止まってくれません。 どなたかこの問題の解決法が分かる方いませんか? *ソースです。(ステージにhoge_mcを置けば動きます。) import caurina.transitions.Tweener; var startX:Number = 0; var cameraRange:Number = 0; var tweenNum:Boolean =false; this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown); this.stage.addEventListener(MouseEvent.MOUSE_UP, onUp); function onDown(event:MouseEvent):void { tweenNum = false; this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); startX = event.stageX; this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onUp(event:MouseEvent):void { this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onMove(event:MouseEvent):void { trace(hoge_mc.x); if(tweenNum == true){ Tweener.removeTweens(hoge_mc); return; } var cameraIkata = event.stageX - startX; hoge_mc.x += cameraIkata; cameraRange = cameraRange + cameraIkata; Tweener.addTween(hoge_mc, {x:cameraRange*2.75, time:3, transition:"easeOut"}); startX = event.stageX; } stage.addEventListener(Event.ENTER_FRAME,loop); function loop(e:Event):void { if (hoge_mc.x > 401) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 400.5; } if (hoge_mc.x < 0) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 0.5; } }

  • ac3 tweener の 色変換について

    tweenerを使って、オブジェクとの色が変化する様子を確認しようと試したところ、以下の記述の中で_colorが認識されません。ある方のページから引用したものをほとんどそのまま試しているのですが、どのように修正したらよろしいでしょうか?お願いします。 package { import flash.display.*; import caurina.transitions.Tweener; import flash.events.MouseEvent; [SWF( backgroundColor='0xFFFFFF', width='300', frameRate='30')] public class Tweener_Test extends Sprite { public function Tweener_Test() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; init(); } private function init():void{ var Box:Sprite = new Sprite(); Box.graphics.beginFill(0x000000); Box.graphics.drawRect(0,0,50,50); Box.graphics.endFill(); addChild(Box); Box.addEventListener(MouseEvent.CLICK,function():void{ Tweener.addTween(Box, {_color:0xFF0000,x:120,time:2,transition:"linear"}); }); } } }

    • ベストアンサー
    • Flash
  • tweenerを使ったスライドショー

    過去ログに似たような内容がありましたが、私の質問する内容は画像の座標について教えてください。グーグルのサイトよりtweenerをダウンロードしました。アクションスクリプトはここで見せてもらいました。http://exyz.cocolog-nifty.com/good_sleep/2007/12/au_45b8.html サンプルは画像が3枚のところ私は5枚にしました。 panel01_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,400,40,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc);   ^^^^^^^ ここの考え方(しくみ)が知りたいのです。いろいろやりましたが思うように動きません。 FLASH CS3 アクションスクリプト2.0 /*ライブラリ読込*/ import mx.utils.Delegate; import caurina.transitions.Tweener; /*トゥイーンをさせる関数*/ function tw(_x1:Number, _x2:Number, _x3:Number, _x4:Number, _x5:Number, mc1:MovieClip, _mc2:MovieClip, _mc3:MovieClip, _mc4:MovieClip, _mc5:MovieClip):Void { Tweener.addTween(_mc1,{_x:_x1, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc2,{_x:_x2, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc3,{_x:_x3, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc4,{_x:_x4, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc5,{_x:_x5, _y:0, time:1, transition:"easelnOutCubic"}); } /*パネルごとの動作*/ // パネル01 panel01_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,400,40,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル02 panel02_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,0,400,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル03 panel03_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,370,400,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル04 panel04_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,90,400,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル05 panel05_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,90,120,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); });

    • ベストアンサー
    • Flash
  • Flash初心者です。

    Flash初心者です。 以下のコードでは、1120:未定義のプロパティ_cubeへのアクセスです。というエラーが出ます。 ネットで調べてみたところ変数の定義がされていない時のエラーなのは分かったんですが、var _cube:Cube = new Cubeの部分では不足なのでしょうか?環境はFlashCS5です。 package { import flash.events.*; import org.papervision3d.objects.primitives.*; import org.papervision3d.view.*; import org.papervision3d.materials.*; import org.papervision3d.materials.utils.*; public class Box extends BasicView { public function Box() { var material:WireframeMaterial = new WireframeMaterial(0x2288CC); var materials:MaterialsList = new MaterialsList({all:material}); var _cube:Cube = new Cube(materials,500,500,500); scene.addChild(_cube); startRendering(); addEventListener(Event.ENTER_FRAME, loop); } private function loop(e:Event):void { _cube.rotationY += 2; } } }

    • ベストアンサー
    • Flash
  • 関数から一気に抜ける

    お世話になります。 不適切なデータを送らないためのスクリプトを書いています。 <form onsubmit="return func1(this);"> (省略) </form> func1 (frm1){   if (frm1.elements[0]~~~) {     alert(msg0);     return false;   } (省略)   if (frm1.elements[99]~~~) {     alert(msg99);     return false;   }   return true; } このように書く代わりに func1 (frm1){   if (frm1.elements[0]~~~) {     exodus(msg0);   } (省略)   if (frm1.elements[99]~~~) {     exodus(msg99);   }   return true; } function exodus(msg) {   alert(msg);   xxxx false; } とかこんな風に書けたらいいなと思うのですが この「xxxx」に相当するような機能はJavaScriptにあるのでしょうか? よろしくお願いします。

  • <input type="button">でボタンを押したときの処理

    ボタンをクリックしたらalertによって下記のような文字列、trueかfalseを返すようにしたいのです。 fulction hantei(){ if(str.length > 6){ document.write("true") } else{ document.write("false") } } あと、functionにはdocument.writeが使えないようなのですが、そうならばどのようにして表示させるのでしょう? よろしくお願いします。

  • applet

    スレッドを使ってタイマーを作ろうと思っています。なぜか、ゆっくりとしかできないのですが・・。よろしくお願いします。 class TimerA implements Runnable { private boolean flg = true; private int time = 6000; public boolean isFlg() { return flg; } public int getTime(){ return time; } public void run() { for(;time > 0; time--) ; flg = false; System.out.println(time); } }

  • ポインタをmcに追随させるには?

    ポインタをmcに追随させるには? mcをスライドさせるTween使用のas2サンプルを、 クリックをロールオーバーにして、クリックにリンクを設定するものにアレンジ。 [フレーム] import mx.utils.Delegate; import caurina.transitions.Tweener; function tw(_x1:Number,_x2:Number,_x3:Number,_mc1:MovieClip,_mc2:MovieClip,_mc3:MovieClip):Void{ Tweener.addTween (_mc1,{_x:_x1,_y:80,time:2,transition:"easeOutBack"}); Tweener.addTween (_mc2,{_x:_x2,_y:80,time:2,transition:"easeOutBack"}); Tweener.addTween (_mc3,{_x:_x3,_y:80,time:2,transition:"easeOutBack"}); } panel01_mc.onRollOver = Delegate.create (this,function():Void{ tw (200,300,100,panel01_mc,panel02_mc,panel03_mc); }); panel02_mc.onRollOver = Delegate.create (this,function():Void{ tw (100,200,300,panel01_mc,panel02_mc,panel03_mc); }); panel03_mc.onRollOver = Delegate.create (this,function():Void{ tw (300,100,200,panel01_mc,panel02_mc,panel03_mc); }); [ムービークリップ] on(rollOver){ topDepth = _parent.getNextHighestDepth(); this.swapDepths(topDepth); } on(release){ getURL("index.html"); } 問題は、前面中央にスライドするmcに連動して、 中央からスライドする別のmcにポインタが反応(ロールオーバー)すること。 ロールオーバーでmcがスライドした際、 ともにポインタを自動的に追随させる方法がありましたらお教えください。 もちろん別の解決方法があれば、そちらの方をお教えいただければ助かります。 当方はas3ではタイムラインのコントロールもおぼつかないレベルです。