アプリ版:「スタンプのみでお礼する」機能のリリースについて

今1秒に1回転するプログラムを作っています
ムービークリップは使っていません
画像の回転はできているのですがタイマー関数を使って画像を回転させるのが出来ないです・・・


使っているツールはflash developだけです

今のプログラムは
インスタンス名.rotation += 1;
で画像の左上を基準にして右回転する感じです

誰か教えてください お願いします

A 回答 (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から特に大きな変更点はありません。
インスタンスの作成部分を含めたので
スクリプトコードをコピペするだけで即動作検証できるようになったというだけです。
「AS3.0で1秒に1回転するプログラムを」の回答画像2
    • good
    • 0

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;
}
}
}
//--------------------------------
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!