軽量化その2

以前AS2で作った花火のFlashが丁度よさげだったのでFlash Lite2.0で試すがあっけなくエラー。花火の粒を300個から50個に減らしたら再生出来たがもの凄くカクカクした動き。これは駄目ね。

計算をなるべく減らして定数を使う様にしたり、アルファチャネルで徐々に消えるエフェクトを外したり粒を30個まで減らしてもまだカクカク。動作をじっくりみていると花火が炸裂するところで花火の粒を一気に30個アタッチしているのが原因っぽい。

1フレーム10個×3フレームかけて30個アタッチするように改造したら割とスムーズに動く。まぁ割り切ってトゥーインアニメーションでやればサクサクなんだろうけどね。やっぱりスクリプトで全部やりたいのよね。

Posted in FLASH Actionscript | Leave a comment

軽量化

週明けなので会議を渡り歩く。ちょっとお疲れ気味。

土曜日からFlash Lite2.0で遊んでるがなんといっても動作が遅い。今まで割とふつーなスペックのPCを対象にして作成していたので当然なんだけど。数十個のムービークリップを同時に動かしたり携帯には荷が重いのね。ロジックがタコってのも大きいだろうけど。まぁしばらくFlash Lite2.0で遊べそうです。

Posted in 雑談・日記 | Leave a comment

Flash Lite2.0デビュー

割と安売りされていた「カシオのW43CA」に機種変更。Flash Lite2.0が目当てで今までの携帯もカシオだったので自然な選択。

さっそく Flash Lite2.0を試す。作り貯めた Flash 7用のファイルをサイズだけ携帯用にしてあれこれ表示させてみるがもの凄く重い。くやしいのでなるべく計算が減るようにしたりあれこれ軽量化を試みる。努力の甲斐あってふつーに動く様になった。

で、今の待ち受けにしてるのがこれ ↓

携帯でみるならこのアドレス↓
http://flapro.net/flash/r.swf

PCからネットにアップして携帯でダウンロードしてるのでもの凄くパケット代がかかってる予感。怖いので「MicroSD」を注文。届くまで携帯で確認するのは控えておこう。

Posted in FLASH Actionscript, 雑談・日記 | Leave a comment

なぞっておぼえる大人の漢字練習購入


漢検DS」と「えいご漬け」を売って「なぞっておぼえる大人の漢字練習」を購入。プレイした感想はamazonに載っていたこのレビューと同感。

●読み・書きの問題をサクサク出来る
●独断の難易度分けではなく、「中学で習う漢字」などで分かれている。
●間違った漢字の復習がまとめて出来る
●文字認識が非常に早く認識精度も良い。
●文字が特大フォントで見やすい。他のソフトではフォントが小さくつぶれることが多い。
●ミニゲームが豊富な上ひとつひとつの出来がよく、答えも出るのでとても勉強になる。
●書き順を教えてくれる。

漢検DS」も気に入っていたんだけど、漢字検定を受けるつもりがない俺には要らない問題が多かったので、サクサク練習出来るやつが欲しかったのよ。「えいご漬け」はインターフェースとかも良かったしよいソフトだったけど全問題クリア&何度やっても一番上のS判定だったのでこれ以上やっても意味ないかと。

Posted in 雑談・日記 | Leave a comment

ActionScript2.0 Delegateを使ったスコープの変更

たまにはFlashネタを書こうということで久々俺のバイブル「Essential Actionscript 2.0」をひっぱり出してActionScript2.0をいじる。で、今回はFlash ActionScript2.0でmx.utils.Delegateクラスを使用したスコープの指定方法。かなり今更な感じもするけど便利なので軽く解説。まずは「サンプル」を。こんな感じでボールがマウスを追いかけるよくありがちなやつ。ソースは下記の通り。

flaファイルの1フレーム目に書くフレームアクション
new Main();

Main.as
import mx.utils.Delegate;

class Main extends MovieClip {
  //ボールをアタッチするMovie Clip参照用
  private var mc;
  //フレームレート
  private var fps:Number = 30;
  
  public function Main (mc:MovieClip) {
    this.mc = mc;
    //初期設定
    init ();
  }
  
  //初期設定
  private function init () {
    //ボールをアタッチ
    var ball:MovieClip = mc.attachMovie ("ball", "ball", 0);
    //マウスを追うメソッドをsetIntervalに登録
    setInterval(Delegate.create (ball, step), 1000 / fps);
  }
  
  //マウスを追うメソッド
  private function step () {
    this._x += (_root._xmouse - this._x) * 0.1;
    this._y += (_root._ymouse - this._y) * 0.1;
  }
}

で、Main.as内のinitメソッドにある setInterval の部分は onEnterFrameを使っても良いが、フレームレートに左右されずスピードをコントロールしたい時はsetIntervalの方が便利。

このテクニック自体は大重美幸さんの本(「FLASH ActionScript スーパーサンプル集 1.0/2.0対応版」とか)で勉強してから多用中なんだけど、クラス内で使う時はちょっと注意。
ball.onEnterFrame = step;
とすると stepメソッド内の this は initメソッドでアタッチした ball になるが、
setInterval(step, 1000 / fps);

とすると、stepメソッド内の this は undefined になってしまう。
こんな時に使えるのが mx.utils.Delegateクラス。
setInterval(Delegate.create (ball, step), 1000 / fps);
とすると step クラス内の this が ball になります。

Posted in FLASH Actionscript | Leave a comment