Flashの最近のブログ記事

Flash作成中にクラスが増えすぎて表題のようなエラーが出ることがあります。
解決方法が書かれたブログがいくつかありますが、Windowsの環境変数に「JAVA_TOOL_OPTIONS」を追加する方法は僕の環境では改善できませんでした。

http://saqoosha.net/2008/12/24/1662/
http://air.creator.ms/flash-011.html

いろいろ探してAdobeのサイトに別の解決策が掲載されていたので、藁をも掴む思いで試したところ、エラーが出なくなりました。
レジストリを弄ることになるので自己責任でお願いします。

http://kb2.adobe.com/cps/405/kb405257.html

「HKEY_CURRENT_USER/Software/Adobe/Flash 10/ActionsInspector」の「JVM Max Heap Size」のサイズを128から256にしました。
僕の環境はWindows7のFlash CS4です。

僕のやり方が悪いのかどうかわからないですが、以前にも環境変数に追加する操作をしたところ、反映されないことがあったので(単にやり方を間違えていただけなのかもしれませんが)、心当たりのある方はお試しください。
本来はFlash/ActionScriptの構成を見直すのが一番の解決策ですが、納期の都合でなかなか出来ない場合も多いので、最終的にはリファクタリングしたいと思ってます。

FITC TOKYO 2010メモ

昨日、開催されたFITCに参加してきました。

○Flashで作成する高性能モバイルコンテンツ(Mike Chambers)
Flash Player 10.1にて搭載されたGPUの使い方、スマートフォン向けアプリ作成時のTipsが主な話
GPU Composition:GPU側でキャッシュを保持し、アニメーションのレンダリングを行う
「cashAsBitmap = true」これだけでGPUがレンダリングを行う。
「cashAsBitmapMatrix = new Matrix()」を記述すると回転等のアニメーションにも適用される
スマートフォンでも使用可能
iOS向けに作成した場合にはデバッグモードが使える。デバッグモードでは再描画エリアが赤く見える。
GPU Compositionを使用時の注意点として、「DrawingAPI」「アニメーションする子がいる」「マスク」「ColorTransforms」「ディスプレイオブジェクトのリストから削除する」場合には思った通りに機能しない
ディスプレイオブジェクトのリストから削除するのではなく(removeChild())、visibility=falseを使いましょう
モバイル向け開発の注意点として「new ○○○()」はコストが大きいので、なるべくオブジェクトを使いまわしましょう
オブジェクトをプールするクラスを使うと便利
イベントではなくコールバックを使った方が早い
タッチとマウスイベントはほぼ同じものとして記述できる。ただしマルチタッチはタッチイベントを使う。
新しい3D API(参考:http://vimeo.com/16175169)は今のところデスクトップ向け。いずれモバイルでも利用できるようになるとのこと。


○拍動性クラックル(Andre Michelle
Flashで606とか808とかを作った人
基本的にはシンセの仕組みの話
波形を生成して、音を鳴らして、波形をズラしてディレイを掛けてというのを当たり前のようにASでやってました
Flash版テノリオンやパーティクルの座標から波形を生成して音を鳴らしたり、物理演算の仕組みを利用して作ったシーケンサのデモなど。
波形を円を描くようにして配置し、レーダーのような針を回して再生するループプレーヤーのデモが圧巻。レーダーの針が再生ヘッドになっていて、針を邪魔するように線を描くとループの再生速度が変わったり、更にループしたりする。
多くのデモはhttp://lab.andre-michelle.com/にて公開されているので要チェック

○Unity入門 ハイクオリティ・インタラクティブ・3Dコンテンツ(Tom Higgins
ゲーム向け開発環境Unityの紹介。
プラグインが必要だがブラウザでも動作する形で作成可能。
比較的簡単に写り込みなども実装できるらしい。
ブラウザで動作するゲームとしてEAがタイガーウッズのゲームをunityで作ったらしい。デモを見たけど、非常に画面が美しい。
何となく名前は知っていたけど、本格的に使おうとすると若干値段が高めな印象。

○HYPE Frameworkで創造力を加速する(Joshua Davis
自身が作成した「HYPE Framework(http://www.hypeframework.org/blog/content/hype-gets-a-new-domain/)」の紹介
誰でもJoshua Davis風のグラフィックが生成出来るフレームワーク。
アニメーションの機能も含んでいる模様。
ドラッグしただけでグラフィックが出来上がったりするようなものを作成できるとのこと。
HYPEを利用してプリントなども作っているらしい。イラレにデータを写すときに10万レイヤーとかになって大変らしいけど。

○『 TelephoneMe』と陰謀のための陰謀(MK12
007のオープニングも作成したアニメーションスタジオの映像紹介。
音楽も含め、全般を自分たちで行うらしい。
使用ソフトもAdobeやMayaなど普通に入手できるものばかり。
メンバーの役割は特に決めていないとのこと
実際に作成した映像をいくつか見せてもらったけど、モーションタイポが非常にうまい、センスがいいと感じた。こういうの作りたいと思うような映像ばかり。
日本の文字は繊細で面白いと言っていたのが印象的。
007のオープニングを作るまでには何度もテストムービーを作っては監督に見せて、ようやく仕事をもらったとのこと。。

○オープンソースマジック(Marco Tempest
プロジェクタとカメラ、LEDなどを利用した手品を披露
キャンバスにプロジェクターで絵を投影して、ARによって絵を制御して合間にオールドスクールな手品を混ぜてる感じ。
今ならキネクト使うともっと違ったことが出来るかも

○アメーバピグ for Androidができるまで(切通伸人
ブラウザ向けのアメーバピグをAndorio向けに移植したという話
AIR for Androidを使ったのですごく楽だったとのこと
ただし、画面構成はAndroid向けに大きく変えたそうです。基本は「ボタンは大きく、少なく、文字は大きく」らしい。

○アクチュアル デザイン(中村勇吾
自身が作成したサイトやCMを紹介しながらコンセプトの説明
「基準点が大切、差異は常識から生まれる。新鮮は当たり前から生まれる。」とのこと。
広告は「新しく感じてもらう」ことが大事。全く新しいものは誰にもわかってもらえないとのこと。
例えば「インタラクティブにアニメーションするウェブサイト」ではなく「ウェブサイトづらしたアニメーション」と言うことで新鮮に感じるそうです。
プレゼン用のデータもいくつか披露していたけど、ものすごいクオリティが高い。CMの絵コンテをFlashで作ってるみたい
以前から気にはなっていたけど、やはり音にはかなりこだわりがある模様。音がある前提でデザインしたり、音と絵の同期にもすごくこだわるらしい。
広告では「興味をもっているユーザー」を前提にしてはいけない、なるべく自然に伝わる形で、とのこと

Progressionメモ

○container.parentにaddChildしちゃダメ

Progressionを使ってFlashを作ってて、そろそろサーバに上げて動作確認しようかなって思ったら、正しく表示しない。
読み込み途中で再生始めちゃったような状態で一部のパーツだけが表示された。ローカルだと普通に再生できるから、全く気が付かなかった。

作業中にflaファイルが保存できない現象が発生したので、flaファイル壊れたかと思って、やり直しかよぉと青くなったけど、いろいろ調べたら、結局、container.parentにaddChildしてたのが原因でその処理の段階でエラー起こして処理が止まっちゃうみたい、なぜかサーバで見るときだけ!

ナビゲーションなので常に最前面に表示させたくて安易にやっちゃったけど、普通のSpriteと扱いが違うのかな。落ち着いたらソース読んでみる。

常に最前面に表示させる方法で手っ取り早いのはPreloaderクラス内で「foreground」にaddChildする方法なのかな。
ただ、Preloaderクラスに突っ込みにくい場合はシーンが切り替わるタイミングでaddChildし直すしかないのかな・・・


○クラスを割り当てたインスタンス内の命名規則に注意

「warning:3598 定義名は読み込まれたパッケージ名と同じです。その名前への無修飾の参照は、定義ではなくパッケージが対象となります。」ってメッセージが出て、ゴニョゴニョ直したんだけど、なかなか直し方がわからなかったのでメモ。
説明しづらいけど、例えば「btn.MyBtn」というクラスを割り当てたインスタンス内にはFlash IDE上で「btn」という名前のインスタンスを作ってはいけないということらしい。

パッケージ名とインスタンス名が同じ扱いになってるって事なのかな。最初、全くわからなくてクラス名を変えたりしてた・・・
エラーメッセージの本買おうかな。
「サイト内に掲載していたYouTubeの動画が見れなくなった」とお客さんから連絡があり、調べたところ、クロームプレーヤー(GUIを自由に作れるプレーヤー)のAPIのURLが変更となったようです。

旧URL:http://gdata.youtube.com/apiplayer
新URL:http://www.youtube.com/apiplayer

英語の開発者向けドキュメントでは新URLで記載されています(日本語ドキュメントは情報が古くなっています 2010/3/17現在)。
http://code.google.com/intl/en/apis/youtube/flash_api_reference.html

FAQにもありました。は3/8の時点で見られなくっていたようです。3/11に更新したときに動画みれた気がするんですが、キャッシュだったのかなぁ。
http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/d9536de4c4495d86/db372fbc8d1cf2c0?lnk=gst&q=gdata.youtube.com/apiplayer&pli=1

よく見かけるYouTube APIのサンプルの多くが、動作しないことから仕様変更はある程度、覚悟してたんですが・・・


FITC TOKYO 2009メモ

昨日、FITCに行ってきました。その時のメモ。

○Sneak Peek of MAX2009 - Lee Brimelow
・AIR2ではWinやMacなど、それぞれのOS向けにインストーラを作成できるらしい。この形だと、OSに対してコマンドで命令出来るらしい。OSのAPIを直接、呼び出せるとのこと。
・Flash Lite4はAS3らしい。
・CS5のiPhoneアプリ作成はWinでも可能。ただし、Mac版でもデバッグ環境が貧弱なのでガッツリ作成する場合には厳しいかもとのこと。また、CS5で作成するいiPhoneアプリはVM上でFlashを動かす感じっぽいので、Object-Cで作るより若干、遅くなるらしい。
・Flash Player 10.1はモバイル端末にも対応とのことだが、今のところ携帯向けとしてはスマートフォンのみ。日本は各キャリアとの交渉中とのこと。

○Making Things Move - Keith Peters(http://www.bit-101.com/
・「ActionScript 3.0 アニメーション」の著者。単純な「丸を動かす」だけのスクリプトに、加速や減速、重力、跳ね返り、バネの動きの動きを追加していって、個々のスクリプトを説明。

○NVIDIA Session - Hiroki Saito
・Flash Player10.1のスマートフォンでのデモ。H.264の動画もサクサク動いてた。

○Connecting the Dots - Mario Klingemann(http://www.quasimondo.com/
・素数をビジュアル化して、法則性を見つけようとしたり、ライフゲームで絵を描いたり。
・Twitterで画像を送る方法の考え方の説明。Base64にしたり、Unicodeにマッピングしたり、最終的にボロノイ図に置き換えて、カラーパレットを送るのが一番キレイに送れるってトコまでの話。ボロノイ図の座標だけだとUnicodeのビットが余るので色を混ぜられるようにしたみたい。
・元画像をボロノイ図にてマッピングし、別のテクスチャとなる画像をランダムに変形させて近い場合にボロノイ図の各領域に当てはめるツールの紹介。書いてて良くわかんないけど、その内、公開するかもとのこと。

○Quick as a Flash - Grant Skinner(http://www.gskinner.com/
・GTWeenの人。Action Scriptの最適化手法の解説。
・テストツールを使いましょう。
・処理の重さを考慮してフレームレートを決めること。
・最適化の検証方法に定型(クリック操作)、定量(起動時間)がある
・最適化の手法としてはシンタックス、アーキテクチャ、アルゴリズムの3種。
・シンタックスの手法としては、乗算より、掛け算の方が早いとか、ifの条件式が複数ある場合は左側により軽い処理を記述することなど
・アーキテクチャの手法としてはインスタンス、オブジェクトを減らすとか、オブジェクトのディープアクセスを減らすとか、変数の型を最適なものにするなど
・アルゴリズムの手法としてはオブジェクトの再利用をしましょうとか。

○Big Spaceship : Digital Creative Agency - Joshua Hirsch(http://www.bigspaceship.com/
・Big Spaceshipの中の人。
・Big Spaceshipはチーム性。チーム内にディレクターからデザイナー、プログラマーまで一通りいる形。チーム内にリーダーはいないとのこと。
・ローディング画面がひたすら流れ続けるPRETTY LOADED(http://www.prettyloaded.com/)も社内プロジェクトで出来たらしい。かっこいいローディングのデータを読み込むためのローディング、更にそれを読み込むためのローディング...みたいなところから出来たらしい。
・戦車で人殺しするゲームの紹介。得点の桁が多すぎるとか、かなりジョークソフトな感じ。
・最近ではMoMAのティム・バートン展のサイト(http://www.moma.org/interactives/exhibitions/2009/timburton/index.php)を作ったとのこと

Flash TracerとAirアプリ

最近、Flash Tracerが動かなくなったなぁと思っていたら、Trace中にAirアプリが動いてると機能しないらしい。多分、Airアプリがflashlog.txtを占有しちゃうみたい。

Flash作成中は速やかにAirアプリを終了しましょう。

 

そういえば先週、TwitterクライアントとしてSpazをインストールしたっけ。それにしてもSpaz、結構ログ吐いてるなぁ。

 

 

AS2のgetURL問題

Flash内のボタンから別ウインドウを開く時、AS2なら大体、以下のようなスクリプトになると思うんだけど。

mc.onRelease = function() {
 getURL('http://www.yahoo.co.jp', '_blank');
}

 

なぜかパブリッシュ時のFlash PlayerのバージョンによってIEでポップアップブロックされるかどうかが変わるっぽい。

試したところ、7でパブリッシュするとブロックされるけど、それ以上だとブロックされない。

で、8でパブリッシュして、Playerのバージョンを7にしてみたらリンクが機能しない。

 

8からはExternalInterface使えるから、回避方法もあるし、あんまり意味ないんだよなぁ。

AS2とAS3が混在できないのは良く聞く話だけど、呼び出し元のswfとFlash Playerのバージョンが異なるswfを読み込むと問題が発生するらしい。

表示用の外部swfを差し替えたら、イベント回りが制御できなくなって原因を探ってたんだけど、結局書き出す時になぜか「Flash Player 5」でパブリッシュしてたらしいことが発覚。呼び出し元のswfとバージョンをあわせたら、すんなり動きました。

単なるオペミスだけど、見た目では判別出来ないので厄介でした。

FlashAddressとposition:absolute

Flash領域に関係なく「position:absolute」が定義されてる要素があるとMac環境でFlashAddressが言う事きかないみたい(SafariとFirefoxで確認)。
ちょっとトリッキーな事したい時に要注意。

FuseKitはムービークリップのフレームアニメーションもコントロール出切るけど、イマイチ使い方が思いつかなかった。

 

よく文字を手で書いてくモーションがあるけど、そういうのに使うと便利っぽい。

フレームアニメーションで作ったMCをスクリプトベースで作ってるFlashに組み込むと同期を取るのが厄介で困ってたけど、FuseKitだったら同期出来る。

 

特に手書きモーションは作るのも修正するのも面倒だけど、最初に長めのアニメーションとして作っておけば、FuseKitで尺を調整できるし、イージングも掛けられる。

以下、簡単なサンプルソース

 

import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts, PennerEasing);

var f:Fuse = new Fuse();
// writeLogo : 尺をコントロールしたいMC
f.push({target:writeLogo, _frame:writeLogo._totalframes, seconds:3});
f.start();