flashの最近のブログ記事

Flash CS3 で AIR アプリケーションのパッケージングおよび、プレビューが行えるようになるアップデータが
Labsで公開されています。

日本語版もしっかりありますね(^ ^)。

Adobe Labs: AIR:Flash CS3 Professional Update


ついにオフィシャルリリース。

エンジンの速度が40%アップ。
新機能も追加されています。

メモ。

blog.papervison3d.org:Papervision3D 1.5 (AS3) Official Release


Papervision3D の パブリックベータがリリースされています。
svn のアドレスも新しくなっていますね。

メモ。


blog.papervision3d.org:Papervision3D Public Beta


RubyAMF

| | コメント(0) | トラックバック(0)

Ruby で AMF。
メモ。

RubyAMF - Flash remotin with Ruby

カメラの映像をswf内に表示する簡単なサンプルを作っていて、ハマったのでメモ。

ビデオオブジェクトをステージに配置。
カメラの映像しか表示しないので、ステージサイズを 180×140 に変更。
あとは Camera.get() して attachVideo() してやればOK。
よし、映像も表示されている。出来上がり!!。
と、他の環境で見てみると映像が表示されない。
なぜ?
・・・

原因:
カメラへのアクセスを許可するかどうかをユーザーが選択するための [プライバシー] ダイアログボックスを表示するのに必要なステージのサイズは 215×138 ピクセル以上だから。

上記のサイズよりステージサイズが小さいと[プライバシー]ダイアログボックスが表示されず、許可も出来ないので、当然ながらビデオオブジェクトにはなにも表示されない状態になる。
なぜ最初の環境で映像が映ったかというと、以前にアクセスを許可して、設定を保存していたから。

カメラを使用したコンテンツを、こんな小さなステージサイズで作ったことがなかったので、なかなか気がつきませんでした。


まとめ:
*Flashでカメラを使うときのステージサイズは 215×138 ピクセル以上が必要!!。


DoCoMo 2.0 なだけに、今後こそFlash Lite 2.0 に対応してくれるかなと期待していましたが、対応端末情報を見た限り、発売されているSH904i、N904iについては Flash Lite 1.1 とのこと。

これから発売される904i端末で 2.0 が搭載されるというのも考えにくいし、ここまでくると DoCoMo端末のFlash Lite は 3.0 までバージョンアップはないのかな。

作ろうiモードコンテンツ:Flash対応端末の情報


asSQL

| | コメント(0) | トラックバック(0)

ActionScript3で直にMySQLに接続できるライブラリ(SWC)。現在、アルファ版。

まだ試していませんが、Apolloアプリの良き相棒になりそうです。

asSQL :an actionscript mySQL driver

Ben Forta氏のblogより。
日本は11月。

Forta.com:MAX 2007 Dates

このキャラの質感、初代ドラクエの敵キャラを思い出します。

自分のバトラーもblogの下の方に貼ってあるので、良かったら戦ってやってください。

ブログバトラー

Fuse Kit

| | コメント(0) | トラックバック(0)

今、Fuse Kitが熱い模様。
Flash系blogでかなり多く取り上げられてる。
とても高機能なアニメーションクラスパッケージ。
勉強しよ。

Fuse Kit

rick7.com blog:fuse kit

FMS 2.0.3 のデベロッパー版は接続数等の制限はあるものの無料で商用利用できるらしい。
太っ腹。

Sti Media/The Source:FMS 2.0.3 EULA sez you can use dev version for free for commercial sites

Edumatic

| | コメント(0) | トラックバック(0)

e-Learning用オープンソース Flash Framework "Edumatic"。
しかもAS3。
今後の展開に期待。

Edumatic

Open Source Flash:Edumatic

今更ながら使う機会がありそうなので使い方をまとめてみる。


Flash / JavaScript Integration Kit

・Download the latest release of the Flash / JavaScript Integration Kit.
から最新のライブラリをダウンロード。

FlashJavascriptGateway.zipを解凍


・Flash側の設定:
1.source/flash/actionscriptのcomフォルダをFlashのクラスパスに追加するか、
Kitを使用するflaファイルと同じディレクトリにcomフォルダごとコピー。

2.Kitを使用するflaファイルにcomフォルダ内のJavaScriptProxyクラスのインポートと、インスタンスを生成するActionScriptを記述。

import com.macromedia.javascript.JavaScriptProxy;
var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this);


・HTML側の設定:
1.installationフォルダのJavaScriptFlashGateway.js、JavaScriptFlashGateway.swfをwebディレクトリにコピー

2.HTMLにFlashProxyのインスタンスを生成するJavaScriptを記述。

<script type="text/javascript" src="上記でコピーしたJavaScriptFlashGateway.jsまでのパス"></script>
<script language="javascript">
var lcId = new Date().getTime();
var flashProxy = new FlashProxy(lcId, "上記でコピーしたJavaScriptFlashGateway.swfまでのパス");
</script>

3.swfを表示するJavaScriptを記述。

<script type="text/javascript">
var tag = new FlashTag("Kitを使用するswfまでのパス", Kitを使用するswfの縦幅, Kitを使用するswfの横幅); // last two arguments are height and width
tag.setFlashvars('lcId='+lcId);
tag.write(document);
</script>

例.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>Sample</title>
<script type="text/javascript" src="JavaScriptFlashGateway.js"></script>
<script language="javascript">
var lcId = new Date().getTime();
var flashProxy = new FlashProxy(lcId, "JavaScriptFlashGateway.swf");
</script>
</head>
<body bgcolor="#ffffff">
<!--url's used in the movie-->
<!--text used in the movie-->
<script type="text/javascript">
var tag = new FlashTag("Sample.swf", 550, 400);
tag.setFlashvars('lcId='+lcId);
tag.write(document);
</script>
</body>
</html>

・FlashからJavaScriptの関数呼び出し:

proxy.call( "JavaScript関数名", 引数1,引数2... );

*呼び出した関数の返り値を取得する場合は、呼び出されるJavaScript関数内でFlash内の関数を呼んで値を返す必要がある。
例.
function callFromAs(){
flashProxy.call("ActionScript関数名", Flashに返す値1,Flashに返す値2... );
}

・JavaScriptからFlashの関数呼び出し:

flashProxy.call("ActionScript関数名", 引数1,引数2... );

*呼び出した関数の返り値を取得する場合は、呼び出されるActionScript関数内でJavaScript内の関数を呼んで値を返す必要がある。
例.
function callFromJavaScript() {
proxy.call( "JavaScript関数名", JavaScriptに返す値1,JavaScriptに返す値2... );
}


*「"com.macromedia.javascript.JavaScriptProxy" がロードされませんでした。」のエラーが出る問題:
Windows 版の Flash は asファイルが BOM つきの UTF-8 で保存されてないとダメらしい。
JavaScriptProxy.as と JavaScriptSerializer.as を Flash で一度開いてから保存しなおすことによって解決。


*日本語が使えない問題:
こちらのblogで詳しい原因と解決策が紹介されています。
ARK-WEB Blog:JavaScriptからFlashの関数を呼ぶ - Flash Java Script Integration Kit

・修正方法:
JavaScriptFlashGateway.jsの250行目付近の以下部分を修正。
修正前.

switch(typeof(args[i]))
{
case 'undefined':
qs += 't'+(i)+'=undf';
break;
case 'string':
qs += 't'+(i)+'=str&d'+(i)+'='+escape(args[i]);
break;
case 'number':
qs += 't'+(i)+'=num&d'+(i)+'='+escape(args[i]);
break;
case 'boolean':
qs += 't'+(i)+'=bool&d'+(i)+'='+escape(args[i]);
break;

修正後.
switch(typeof(args[i]))
{
case 'undefined':
qs += 't'+(i)+'=undf';
break;
case 'string':
qs += 't'+(i)+'=str&d'+(i)+'='+encodeURI(args[i]);
break;
case 'number':
qs += 't'+(i)+'=num&d'+(i)+'='+escape(args[i]);
break;
case 'boolean':
qs += 't'+(i)+'=bool&d'+(i)+'='+escape(args[i]);
break;


Document classを試してみた。
とりあえずコンストラクタだけの簡単なクラスを作ってプロパティインスペクタにクラス名を指定してプレビュー。
"Sprite から継承する必要があります。"とエラー。

flash.display.Spriteを継承したらOK。
もちろんSpriteのサブクラスのflash.display.MovieClipを継承してもOK。

試しにタイムラインに

trace(this instanceof Sprite);

と書いてみたら、警告でたけど true が返ってきた。

ということでDocument classはSprite型。
この解釈で良いのかな。

昨日ActionScript 3 デビューセミナーに参加。

FlashOOPのマルコス氏が高負荷のコンテンツをAS2とAS3で作った場合の比較を紹介していたのだけど、圧倒的な処理速度の違いに感動。
ということで今日から、はじめますAS3。

ちなみにマルコス氏はFlex Builder 2で作っていました。スクリプトだけで制作するならFlashよりもデバッグしやすく使い易いらしいです。
そういえば、同セミナーでAdobeの上条氏が「AS3になって、Flashのオーサリング = ActionScriptのクラス定義と言えるようになった」と紹介していました。
そう考えると、スクリプト系Flash使いの開発環境の選択肢としてFlex Builder 2も十分に考えられそうです。