質問ページ / 6


携帯用の待ち受け-SWF4でアナログ時計

  • ページ: 質問ページ
  • 投稿者: a初心者?
  • 状態: 提案
  • 投稿日: 2007-12-28 (金) 14:01:01

メッセージ

携帯用の待ち受けで、アナログ時計を作ろうと思ったのですが、 時計の分針のインスタンス名を「long」にして、フレームアクションに

min=fscommand2("GetTimeMinutes"); long._rotation=min*6;

と記述したのですが、携帯でみても全く分針が動きません(回転角0°のまま)。 ただし、"分"(上の変数min)の値はきちんと取得できているようなのです。 上のスクリプト2行目に問題があるのではないかと思いますが、どのようにすれば、携帯でアナログ時計をきちんと作れるのでしょうか。回答よろしくおねがいします。


long._rotation=min*6;
の _rotation の前のアンダースコアがあっては動きません。
long.rotation=min*6;
です。
その他 x や y や alpha などのプロパティも同様です。

Suzuka 及び ParaFla! の SWF4 用スクリプトは独特です。
ActionScript1.0 とも Flash Lite(1.1) とも Flash 4 とも違います。

また時計のスクリプトは、
フレームのループで繰り返し実行されて時計として動きます。

あと、
Flash Lite 1.x は Flash Player 4 のバグをそのまま背負っていて、
rotation(_rotation)プロパティを変化させ続けると、針がだんだん短くなったり長くなったりします。

それを防止するために、

long.xscale = 100;
long.yscale = 100;

のように、毎回大きさを補正してやる必要があります。

動作検証は携帯でするのが一番ですが、
iモードHTMLシミュレータII でもできます。
http://www.nttdocomo.co.jp/service/imode/make/content/html/tool2/ -- 2007-12-31 (月) 13:43:41

  • 針が短くなる現象は公式のナレッジベースに記載がありますが、実は良く知られている対策(scale再設定や整数値によるrotation操作)では不完全です。 あの対策を守るだけでは、Suzukaでいうところの傾斜値などに歪みが蓄積されてゆき、最終的には傾斜値90度以上と同等の状態に陥ります。 原因はスプライト表示位置の保持に使う行列の操作方法で、Flash Liteでは高速化のための三角関数テーブルが等倍・非傾斜・整数角度回転以外では正しい値を返さない事にあります。 バグを完全に回避するには「表示は等倍(2倍や0.5倍等も可)、傾斜は0、rotationは整数の書き込み専用」とする必要があります。 また初回の回転は上手く行くので、毎回スプライトを作り直すことも有効です。 最終手段として、rotation=0→各scale=0→各scale=100→rotation=任意の浮動小数、という操作により傾斜値換算45度以内の歪みを解消できるのでそれも方法の一つです。 -- 1? 2012-05-09 (水) 20:45:56

新規ページ作成

Menu

Edit Menu

  • counter: 4585
  • today: 1
  • yesterday: 0
  • online: 1


Total: 248.8 KB
text: 156.9 KB
attached: 91.9 KB