• 締切済み

AS3.0で1秒に1回転するプログラムを作りたい

今1秒に1回転するプログラムを作っています ムービークリップは使っていません 画像の回転はできているのですがタイマー関数を使って画像を回転させるのが出来ないです・・・ 使っているツールはflash developだけです 今のプログラムは インスタンス名.rotation += 1; で画像の左上を基準にして右回転する感じです 誰か教えてください お願いします

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 ご質問で書かれているインスタンスとは結局何なのかがわかりませんが, そのインスタンスがスプライトであるものとして, 実際に FlashDevelop を使って そのスプライトインスタンスを作成する部分も含めたコードに#1のコードを書き替えてみました。 ASファイルのファイル名は「Main.as」であるものとした場合です。 --------------------------------- package { //各クラスのインポート import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; // public class Main extends Sprite { //変数の宣言 private var sp:Sprite; private var tm:Number; // //コンストラクタ public function Main():void { //スプライトインスタンス「sp」の作成&配置 sp = new Sprite(); sp.x = stage.stageWidth / 2; sp.y = stage.stageHeight / 2; addChild(sp); // //「sp」内に青い長方形を描画 sp.graphics.beginFill(0x0000FF); // 座標(0px,0px)を起点(左上)に10×100pxの矩形を描く sp.graphics.drawRect(0,0,10,100); // //「sp」に毎フレーム実行するリスナーを登録 sp.addEventListener(Event.ENTER_FRAME, rotateInstance); } // //インスタンスを回転させる関数rotateInstanceを定義 private function rotateInstance(e:Event):void { //ミリ秒数を取得 tm = getTimer(); //ミリ秒数を秒数にした小数部分を取得 tm = tm / 1000 - Math.floor(tm / 1000); //ターゲットインスタンスをその小数の角度回転させる e.target.rotation = tm * 360; } } } --------------------------------- ※ 作成&動作検証 FlashDevelop 3.3.4   ActionScript 3.0   Flash Player 10 設定 #1から特に大きな変更点はありません。 インスタンスの作成部分を含めたので スクリプトコードをコピペするだけで即動作検証できるようになったというだけです。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

Flash(Flash Player に表示されている SWF)は 1フレーム進む時間毎に表示更新されます。 ですから何か見えているインスタンスを随時動かす場合は Timerクラス ではなく Event の ENTER_FRAME を使うのが一般的です。 私は FlashDevelop を使ったことがないので その仕様(スクリプトを書く場所や独特の書き方)などは知りませんが だいたい次のような感じでできると思います。 Adobe Flash CS○ の ドキュメントクラス の場合のスクリプト例です。 //-------------------------------- package { import flash.utils.getTimer; import flash.display.MovieClip; import flash.events.*; public class RotateClass extends MovieClip { var tm:Number; public function RotateClass() { //インスタンスに毎フレーム時間で実行するリスナーを登録 //(実行関数 rotateInstance) インスタンス名.addEventListener(Event.ENTER_FRAME,rotateInstance); } //関数 rotateInstance の定義 public function rotateInstance(e:Event):void { //ミリ秒数を取得 tm = getTimer(); //ミリ秒数を秒数にした小数部分を取得 tm = tm / 1000 - Math.floor(tm / 1000); //ターゲットインスタンスをその小数の角度回転させる e.target.rotation = tm * 360; } } } //--------------------------------

関連するQ&A