logicalyze::blog

Archive for the ‘ActionScript’ Category

”ActionScript 2.0”と”AVM1”は、寿命はいつまで?

leave a comment

Flash Pro CC setup

最近は、めっきりその需要が減ってしまったFlashですが色んな意味で今後の展開が気になっています。
その中でも一番気なっているのが”ActionScript 2.0”とその再生ランタイム(ActionScript仮想マシン)である”AVM1”の行方(寿命)です。

Flash Player 10以降の機能を使うとすれば既にその時点でActionScript 2.0で書くと言う選択肢はなかったのですが最新(9月現在)のFlash Pro CCでは”ActionScript2.0”自体が実装されていません。(↑上図)

で、何を心配しているかと言うと過去に作ったコンテンツ(ActionScript 2.0+Flash Player 8)が今後いつまで動作可能かと言うことです。

ウェッブデザインとしてのFlashであれば、HTML5に新たに書き換える(またはイチから作る)と言うことが第一選択肢として考えられますがウェブアプリケーションのような場合、現在のHTML5では機能的にまだまだ置き換えができません。

今後、いつまでそのコンテンツ(アプリケーション)が使われるのかをクライアントに確認して、場合によっては”ActionScript 3.0”への書き換えを勧めたほうがいいですかね?

ちなみに来月(10月)にFlash Pro CCの次のメジャーアップデート版が登場予定です。
またまた大きく変化するようなのでどうなることやらです。

また年末には個人的にCleative Cloudの契約が切れるので更新すべきか迷うところです。
最近、アドビ製品を使う需要がほとんど無くなっているので・・・

Written by admin

9月 27th, 2013 at 5:21 pm

SWFの読み込みに関する備忘録

leave a comment

Flash仕事がしばらく空いてしまうとActionScriptの書き方を忘れてしまったりするのですが、その中でも外部SWFの読み込みに関する部分は、特にど忘れが激しいので自分用のメモです。

読み込んだSWFをコントロールする必要がない場合:簡易版

var ld:Loader = new Loader();
ld.load(new URLRequest("ext.swf"));
mc.addChild(ld);

読み込んだSWF内のMovieClipやスクリプトにアクセスする場合:
LoaderをMovieClip(等)にキャストする必要がある
もちろんSWF内部にアクセスする必要がなくてもロードが完了している方が色々と便利に使える。

var f_mc : MovieClip;
var ld : Loader = new Loader();
var url:URLRequest = new URLRequest("ext.swf");
ld.load(url);		ld.contentLoaderInfo.addEventListener(Event.COMPLETE,onSWFLoadComplete);

private function onSWFLoadComplete(event:Event):void
{
  f_mc = event.currentTarget.content as MovieClip;
  mc.addChild(f_mc);
  //
  f_mc.marker_mc.x = 100;
  f_mc.marker_mc.y = 100;
}

関連した内容としては以前投稿した「ロードされた外部SWFへのスクリプトアクセスが面倒・・・」も参照。

Written by admin

8月 10th, 2012 at 2:50 am

Posted in ActionScript

Tagged with ,

FlashのMicrophone機能とWindows7でツボった・・

leave a comment

先日まで、Flashのマイクロフォン機能を利用したマルチトラック(再生)&録音ミキサーを作っていたのですが最後の最後に来てWindows7でハマってしまいました。

まず、使用しているPBJファイルを含めてMacOSXやWindowsXP等で問題なく動作しているということを踏まえた上で、まず最初の問題はクライアントが新規に導入したマシンがLets noteのWindows7搭載PCであったことです。

これはある意味、運よくといえるのか、悪かったといえるのか、通常PCのサウンドドライバは入出力を含めてひとつのチップないしはボードになっているので、例えば外部スピーカーが繋がっていなかったり、マイクジャックにマイクが繋がっていなかったとしてもドライバ自体はプログラム側から認識されます。
ところがLets noteでは、マイクが繋がっていないとコントロールパネルから入力ドライバ自体が消えてしまいます。
当然ながらドライバが見つからなかった場合のエラー処理を書いておかないとそれ以降のプログラムにエラーが発生してしまいます。

これが分かるまでひとツボです。

次に、Windows7(Vistaは?)でオーディオを再生したときにマイクロフォン機能をオンにすると再生しているオーディオの音量がガクンとダウンしてしまうことです。

これも何が問題なのかを発見するまでにプログラムを色々書き換えてみたりしてみましたが最終的に何をやってもマイク機能がオンになるとそれ以外の再生音がゲインダウンしてしまうという結論にいたりWindows7ではダメなのかと思ってしまいましたが答えは意外なところにありました。

改めてコントロールパネルのサウンドを開いてみると他のOSには無かった「通信」と言うタブが追加されていてマイクロフォンのアクティビティが検出されると自動的に他のサウンドがゲインダウンするという設定になっていました。(デフォルト)

これがふたツボ目です。

やや疲れ気味です。
みなさんもマイク機能を扱うときはご注意あれ!

■ 下図パネル参照
Read the rest of this entry »

Written by admin

3月 15th, 2012 at 5:18 pm

多次元配列を任意のキーでソートする

leave a comment

たまにはコード的なショートネタをひとつ。

最近の仕事で多次元配列をソートする必要があったんだけどヘルプとかリファレンスには詳しい解説を見つけられなかったので(たぶん?!)ちょっとネット界隈で調べてみました。

と言ってもやり方は通常のソートとそれほど違わなかったので深く考える必要もなかったんだけど。
多次元配列ということでちょっと身構えてしまいましたね(笑)
まあ、とりあえず自分用のメモとして。

やりたかったのはある配列データをアップデート日の新しい順にソートとしたいと言うこと。

以下のコードでは、list(多次元配列)のupdateキーで数値の降順に並べ替えます。

var list:Array = [];
list.push({update:201003151921,id:1});
list.push({update:201003151923,id:2});
list.push({update:201003151926,id:3});
list.push({update:201003151922,id:4});
list.sortOn("update",2);
//
trace(list[0].id);
trace(list[1].id);
trace(list[2].id);
trace(list[3].id);
trace(list[0].update);
trace(list[1].update);
trace(list[2].update);
trace(list[3].update);
//
3
2
4
1
201003151926
201003151923
201003151922
201003151921

■ sortOn()関数の2番目の数字は以下のように対応しています。

* Array.CASEINSENSITIVE または 1(デフォルトなので2番目の引数は省略可)
* Array.DESCENDING または 2
* Array.UNIQUESORT または 4
* Array.RETURNINDEXEDARRAY または 8
* Array.NUMERIC または 16

Written by admin

1月 18th, 2011 at 3:12 pm

BetweenAS3に回帰する

leave a comment

最近の仕事でBetweenAS3の使いやすさと機能性を再認識しました。

私の場合、Flashを使った仕事でもアプリケーションものが殆どなのでトゥイーン自体のニーズが少ない。

そのせいもあってトゥイーンライブラリに特にこだわりもなく、必要な時点で最新又は人気のもの、あるいは使い慣れた物、ライセンスがクリアなものと言った感じで使っていたので最近では、最も新しいKTweenを使ってました。

で、今回、珍しくトゥイーン使いまくりのAIR仕事があったので当然のことながらKTweenでやり始めたのですが、複数のトゥイーンが連続したときにどうも簡潔に書くことが出来ないし、正しく動作しているかの保証がない。

やりたかったコトは、複数又は連続したトゥイーンを確実にコントロールすること。
コールバック関数を書けばKTweenを含めてどのライブラリでも似たようなことができるけど、出来ることなら簡潔に分かりやすく書きたい。

そこで思い出したのが、BetweenAS3のシリアル・パラレル(グルーピング)機能。

必要であればトゥイーングループ前後にディレイも追加できるし、これは、むちゃくちゃ便利!

下記は、今回書いたコードの一例、後半の数行でグルーピングの状態が一目瞭然。

 var a1 : ITween = BetweenAS3.to(_old, {alpha:0}, 1.0, Linear.linear);
 var a2 : ITween = BetweenAS3.to(_bitmaps[_count], {alpha:1}, 1.0, Linear.linear);
 var t1 : ITween = BetweenAS3.to(_bitmaps[_count], {scaleX:_endScale[_count]}, _duration[_count], Linear.linear);
 var t2 : ITween = BetweenAS3.to(_bitmaps[_count], {scaleY:_endScale[_count]}, _duration[_count], Linear.linear);
 var t3 : ITween = BetweenAS3.to(_bitmaps[_count], {x:_endPositionX[_count]}, _duration[_count], Linear.linear);
 var t4 : ITween = BetweenAS3.to(_bitmaps[_count], {y:_endPositionY[_count]}, _duration[_count], Linear.linear);
 var ag : ITween = BetweenAS3.parallel(a1, a2);
 var tg : ITween = BetweenAS3.parallel(t1, t2, t3, t4);
 var tgserial : ITween = BetweenAS3.serial(ag, tg);
 tgserial.onComplete = onNexttAnimation;
 tgserial.play();

今後再びトゥイーンライブラリを使うときはBetweenAS3を第一候補にします。(笑)

Written by admin

11月 18th, 2010 at 10:04 pm

Posted in ActionScript

Tagged with , ,