Home > ActionScript 3.0 Archive

ActionScript 3.0 Archive

Progression4 ひとくちメモ1 - CastButtonとmouseChildren


CastButtonはインスタンス化と同時にmouseChildrenがfalseに設定されるようなので、
子ボタンを入れる場合はtrueにしましょう。

忙しいです。


今月来月とちょっとキャパオーバー気味です。
忙しいからというわけではないですが、今抱えている案件がちょうど適していたのでProgression4を導入しました。
Progression4の感想などは落ち着いたら書きたいと思います。

あ、確定申告もしないと・・・

pause, resumeができる自作Timerクラス


Flash標準のTimerクラスがpauseできないのが不満だったので自作しました。
http://www.libspark.org/wiki/310design/timer

動作サンプル


複数のシンボルのリンケージを一括で設定できる拡張パネルをSpark projectにコミットしました。


linkagesettings.png

『Linkage Settings』
http://www.libspark.org/wiki/310design/linkagesettings

晴れてSpark projectのコミッタになりました。
Progressionに同梱のコレとかちょっと昔のコレとか同じようなものは既にあるんですけど、
自分にとって使いやすいものをJSFLの練習がてら作ってみました。

FlashCS4の標準の複数設定(複数シンボル選択→右クリック→プロパティ)に
毛が生えた程度で機能的に物足りないかもしれませんが、
Progressionのヤツが高機能すぎて使い方が分からないという人は使ってみてください。

あ、いまんとこAS3のみ対応です。

ASでJSFLの関数の引数をObject型で渡す


Number、String、Booleanなどプリミティブ型を引数で渡すのはカンタンですが、
Objectを渡す時は少し注意が必要です。
import adobe.utils.MMExecute;

var str:String = "引数";
var obj:Object = {a:"a", b:"b"};

MMExecute(
  'fl.runScript(fl.configURI+"/hoge.jsfl", "testFunc", ' + str + ')' //OK
);
MMExecute(
  'fl.runScript(fl.configURI+"/hoge.jsfl", "testFunc", ' + obj + ')' //エラー
);
MMExecuteの引数はString型なので そのまま渡してもエラーになります。
まあ、当然ですね。
なので、jp.nium.utils.ObjectUtil.toString()などを使って、
Stringに変換してから渡してやりましょう。
import adobe.utils.MMExecute;
import jp.nium.utils.ObjectUtil;

var obj:Object = {a:"a", b:"b"};

MMExecute(
  'fl.runScript(fl.configURI+"/hoge.jsfl", "testFunc", ' + ObjectUtil.toString(obj) + ')'
);
例は示しませんがArrayとかでも同様です。

fl.runScriptで外部JSFLファイルを読み込むのは最初の一回でよい


常識かもしれないけど、JSFLまわりはドキュメントが少ないので、一応メモ。
外部JSFLファイルの関数を実行する場合は普通、
import adobe.utils.MMExecute;

MMExecute(
  'fl.runScript(fl.configURI+"/hoge.jsfl", "test")'
);
などと記述しますが、同じ関数を繰り返し実行する場合や、複数の関数が存在する場合は、
MMExecute(
  'fl.runScript(fl.configURI+"/hoge.jsfl")'
);
MMExecute(
  'test1()'
);
MMExecute(
  'test2()'
);
のようにするとその都度ファイルを読む必要がないしコードも簡潔になります。

ActionScript 3.0 エラーアーカイブス



ActionScript 3.0 エラーアーカイブス コンパイルエラー・コンパイラ警告・ランタイムエラーの解法


エラーメッセージが分かりにくいのが難点のAS3ですが、
書籍化されるとは・・・

でもこういうニッチなAS本が出るのは喜ばしいことですね。

ActionScript 左括弧の改行


ActionScriptのコード書いてて、左括弧の前で改行するかしないか悩むことがあります。

FlashDevelopの自動補完では改行されるけど、Adobe的には改行しないのが好ましいみたい。


//Adobe推奨
public class MyClass():void {
  trace("Hello World");
}

//FlashDevelop
public class MyClass():void
{
  trace("Hello World");
}


みなさんはどっち派?

僕はFlashDevelopに出会うまでは全く改行しなかったけど、
FlashDevelopを使うようになってからは、なるべく改行するようにしています。
ただし、if...elseとかtry...catchの場合、改行すると違和感があるので、改行しないことが多いです。

精神衛生上あまりよくないのでどっちかに統一したいのですが・・・

Flash OOP勉強会に行ってきた。


Flash OOPの勉強会が久々に開催されたので行ってきました。
第30回 勉強会のお知らせ (Flash OOP Japan)

内容は、「数学的なベクトルと行列からMatrix/Matrix3Dクラスを理解する」by野中文雄さん
野中さんのActionScript3.0 プロフェッショナルガイドの最後の章をそのままなぞって、最後にMatrix3DクラスとGraphics.drawTriangle()メソッドの解説をちょろっと、といった感じでした。

なんか高校数学の授業みたいで、懐かしい臭いがしました。
紹介してたサンプルを忘れないうちになぞっておきます。
というか、CS4初めて触った・・・





参考:
Adobe - デベロッパーセンター : Matrix3Dクラス - 変換行列2
FN0811001 - 変換行列を数学的に捉える - Flash : テクニカルノート
drawTrianglesとUVマッピング #2 | (SCRATCHBRAIN.BLOG v2)

AS3とXML名前空間

AS3バリバリな人には「ぷっ」って感じでしょうけど、自分用にメモ。
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss">
<channel>
<title>4U</title>
<link>http://4u.straightline.jp/</link>
<atom:link rel="next" href="http://4u.straightline.jp/rss?page=2"/>
<pubDate>Fri, 05 Sep 2008 06:18:05 GMT</pubDate>
<item>
<title>Faces of the World - 5 by ~NightmareLuffy on deviantART</title>
<link>http://4u.straightline.jp/image/b5527863d91cf16ae495826068455851</link>
<guid isPermaLink="true">http://4u.straightline.jp/image/b5527863d91cf16ae495826068455851</guid>
<media:content url="http://fc03.deviantart.com/fs36/f/2008/248/a/6/a64ac86cfb8cbdc54455623039ef7b4b.png"/>
<media:thumbnail url="http://www.straightline.jp/html/found/static/upload/m/m_b5527863d91cf16ae495826068455851.png"/>
<pubDate>Fri, 05 Sep 2008 06:18:05 GMT</pubDate>
<description>&lt;p&gt;&lt;a href="http://4u.straightline.jp/image/b5527863d91cf16ae495826068455851"&gt;&lt;img src="http://www.straightline.jp/html/found/static/upload/m/m_b5527863d91cf16ae495826068455851.png" /&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://4u.straightline.jp/user/manage/do_register?src=http://fc03.deviantart.com/fs36/f/2008/248/a/6/a64ac86cfb8cbdc54455623039ef7b4b.png"&gt;i love her&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description>
</item>
<item>
<title>偷拍在公园练习瑜伽的MM,很是太美了!(组图)_踏雪寻梅_凤凰博报</title>
<link>http://4u.straightline.jp/image/4d35dd6d76d3c0f7a43e16bfe9c63279</link>
<guid isPermaLink="true">http://4u.straightline.jp/image/4d35dd6d76d3c0f7a43e16bfe9c63279</guid>
<media:content url="http://bbs1.people.com.cn/posts/05/41/1A/19/A88152601.jpg"/>
<media:thumbnail url="http://www.straightline.jp/html/found/static/upload/m/m_4d35dd6d76d3c0f7a43e16bfe9c63279.jpg"/>
<pubDate>Fri, 05 Sep 2008 12:57:03 GMT</pubDate>
<description>&lt;p&gt;&lt;a href="http://4u.straightline.jp/image/4d35dd6d76d3c0f7a43e16bfe9c63279"&gt;&lt;img src="http://www.straightline.jp/html/found/static/upload/m/m_4d35dd6d76d3c0f7a43e16bfe9c63279.jpg" /&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://4u.straightline.jp/user/manage/do_register?src=http://bbs1.people.com.cn/posts/05/41/1A/19/A88152601.jpg"&gt;i love her&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description>
</item>
<item>
<title>(via vostone) - rePhoto - Tumblrで人気の画像をまとめてチェック&amp;reblog</title>
<link>http://4u.straightline.jp/image/0d1e7eea43d10bab50c708d3509f88e9</link>
<guid isPermaLink="true">http://4u.straightline.jp/image/0d1e7eea43d10bab50c708d3509f88e9</guid>
<media:content url="http://rephoto.jpn.org/img/photo/C7fuTLqqx8oc6mrmuNGnpt5s_500.jpg"/>
<media:thumbnail url="http://www.straightline.jp/html/found/static/upload/m/m_0d1e7eea43d10bab50c708d3509f88e9.jpg"/>
<pubDate>Fri, 05 Sep 2008 08:07:56 GMT</pubDate>
<description>&lt;p&gt;&lt;a href="http://4u.straightline.jp/image/0d1e7eea43d10bab50c708d3509f88e9"&gt;&lt;img src="http://www.straightline.jp/html/found/static/upload/m/m_0d1e7eea43d10bab50c708d3509f88e9.jpg" /&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://4u.straightline.jp/user/manage/do_register?src=http://rephoto.jpn.org/img/photo/C7fuTLqqx8oc6mrmuNGnpt5s_500.jpg"&gt;i love her&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description>
</item>
</channel>
</rss>
というようなXMLがあって、太字の要素にアクセスしたいときは、
var ns:Namespace = new Namespace("http://search.yahoo.com/mrss");
trace(rss.channel.item[0].mediaNs::thumbnail.@url);
という具合に名前空間を正しく指定する必要があります。
ちなみに、引用したXMLは、4U - beauty image bookmarkingのRSS(の一部)です。

WiiFlash始めました - その1

wiiflash.png

例によってFlash OOP本を見ながらやってます。
ちなみに、本書の内容はこちら

で、本の通りにやってみて、とりあえずデモが動くことは確認できましたが、その際の注意点とか。

まず、Wiiリモコンのシンクですが、1と2ボタン両押しでシンク可能です。
わざわざ電池カバーを外して赤いシンクボタンを押す必要はありません。

あと、OOP本のサンプルコードはクラスライブラリのバージョンが古いので、
最新版のWiiFlash Server(現時点では0.4.2)では正常に動作しません。
クラスライブラリを最新版にアップデートすれば動きます。

これに気づくまでは、Parallelsを疑ってみたり、激安で買ったBluetoothアダプタ(980円)を疑ってみたり、果てはWiiリモコンの電池切れを疑ってみたりで、かなり無駄な時間を費やしてしまいました・・・

あ、別にOOP本にケチ付けてるワケじゃないです。
OOP本は間違いなく良書です。時代の流れが速すぎるんです。

マカーですがFlashDevelop始めました。

flashdevelop.png

制作環境がMacなので、敬遠していましたが、とうとうFlashDevelop始めました。
ただし、Parallels環境で。

Parallelsは普段そんなに使ってなかったので、あらめて環境整備してたら夜が明けました・・・
いっそのことWindowsに完全移行したいんですが、金と時間がかかるのでとりあえず保留。

FlashDevelopに関しては右も左も分からないので、Flash OOP本で勉強します。

UstreamをFlashに読み込む - その2


前回の続きです。
結論から言うと無事に読み込むことができました。

今までもhetemlのFMSでライブ配信してたので、見た目は同じですが、
自分サイトで実装しました。
http://310design.org/

ただ、START BROADCASTするたびにlogic_urlが変わってしまうので要修正です。
rtmp://flash○○.ustream.tv/ustreamVideo/269614
○○の数字の部分が変わります。

現状はPCつけっぱなしでブロードキャストしたままなので、取り急ぎは問題ないんですが、
やっぱり、logic_urlを動的に読み込む仕様に修正した方がスマートですね。

あと、何もしないと一定間隔で接続が切れてしまうので、
定期的にNetConnection.call()してやる必要があります。

コードがまだぐちゃぐちゃなので、整理してから公開したいと思います。

※サンプルは動作しませんが下記が参考になりました。
KYUCON*BLOG: Ustreamのストリーミングを自分のFlashに読み込む

Adobe MAX Japan 2009


http://jp.max.adobe.com/
アドビ最大のデベロッパー、クリエイター向けカンファレス「Adobe MAX」今回も日本での開催が決定いたしました。
米国(11/16 - 11/19)、ヨーロッパ(12/1 - 12/4)に続き、2009年 1月29日(木)、30日(金)に東京・お台場にて開催されます。Adobe MAX Japanへの申し込みは、10月以降に開始を予定しておりますが、最新情報をお知らせするメールサービスもございますので、是非ご利用ください。
また、いち早くアドビの最新動向を知ることができるMAX USへの視察ツアーを今年も実施いたします。こちらは既にお申し込みが可能でございますので、ご参加を希望される方は、是非お早めにお申し込みをお願いいたします。

UstreamをFlashに読み込む - その1

Ustreamの任意のチャンネルをFlashに読み込む方法です。

Saqooshaさんが既に似たようなことをやっておられますが、なんか死んでます。
一生懸命何かを読み込んでいるようですが、何にも表示されません。
Ustreamの仕様がけっこう頻繁に変更されているっぽいのでそのせいかもしれません。

サクっとできると思ってましたが、意外とリファレンスが少ない感じです。
なので自分でなんとかしようと思います。

今回読み込みたいチャンネル
http://www.ustream.tv/channel/310design_nini


手順
1) AMF(FlashRemoting)でhttp://gw.ustream.tv/gateway.phpの、
client.check_broadcasterメソッドを呼ぶ。
その際にcid(channelidでもいいみたい)を渡してやる。

AS3のソースは下記の通りです。
package {
import flash.display.Sprite;
import flash.net.*;

public class UstreamImporter extends Sprite {

public function UstreamImporter() {
connect("269614");
}

private function connect(cid:String):void {
var nc:NetConnection = new NetConnection();
nc.objectEncoding = ObjectEncoding.AMF0;
nc.connect("http://gw.ustream.tv/gateway.php");
nc.call("client.check_broadcaster", new Responder(gatewayHandler), {cid:cid});
}

private function gatewayHandler(res:Object):void {
for (var i:String in res) {
trace(i+": "+res[i]);
}
}
}
}
http://www.ustream.tv/channel/310design_niniのcidは269614です。
cidの値はHTMLのソースを見れば分かります。

2) 下記のような感じでチャンネルの各種情報が返ってきます。
channel_title: 310design_nini
err_desc: ok
logic_url: rtmp://flash14.ustream.tv/ustreamVideo/269614
roomid: uQidsUTepw.BvpUUgBfwHa3x2z1KUZHp
id: null
chat: true
user_flagbits: 0
stream_url: false
channel_url: 310design_nini
status: online
pictures:
streamname: streams/live
online_id: 5690251
encoder: on2
channelid: 269614
success: true
offlinemode: picture
videos:
いろんなプロパティがありますが、今回とりあえず必要なのは、
logic_url: rtmp://flash14.ustream.tv/ustreamVideo/269614
streamname: streams/live
の2つです。
必要な情報は取り出せたので、あとは実際にFMSに接続して再生するだけだと思うのですが、一筋縄ではいきそうにないので、続きはまた後ほど。

というか、本当にうまくいくのかしら?

AS3のサウンド操作をラクにするカスタムクラス


feb19.jp blog - life is creative! AS3で音のボリュームやパンを操作する

これは便利。
ソースだけ晒しておきます。
詳細は上記リンク参照。

package {
import flash.media.SoundTransform;
public class SoundUtils {
private var st:SoundTransform;
private var source;
public function SoundUtils(src) {
source = src;
}
public function set volume(num:Number):void {
getSoundTransform().volume = num;
source.soundTransform = getSoundTransform();
}
public function get volume():Number {
return getSoundTransform().volume;
}
public function set pan(num:Number):void {
getSoundTransform().pan = num;
source.soundTransform = getSoundTransform();
}
public function get pan():Number {
return getSoundTransform().pan;
}
private function getSoundTransform():SoundTransform {
if (!st) {
st = source.soundTransform;
}
return st;
}
}
}

iPhoneとFlashをつなぐAS3ライブラリ『iphoneas』


詳しくはこちら。
http://ameblo.jp/uranodai/entry-10120822061.html

そのうち、Spark Projectにコミットされるみたいです。
わーい。

・・・でも俺、iPhone持ってねえしw

FlashOOP for ActionScript3.0 書籍発売記念イベント

flash_oop_event.jpg

FlashOOP for ActionScript3.0 書籍発売記念
//デビューから2年 AS3の今を語ろう

日時:2008年8月14日(木) 18:30〜22:00 会場18:00〜
場所:六本木スーパーデラックス
参加料:¥3,500(※書籍の帯持参で当日500円キャッシュバック)

http://www.flashoop.jp/event/

ActionScript3.0入門ノート2


Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)


続編キター!!!!
今回はカスタムイベントとクラスの継承について深く掘り下げているようです。

UMapが死んでる・・・



http://www.strama.jp/
このサイトでAFCのUMapコンポーネント使ってるんだけど、いつのまにか画像が読み込まれなくなってしまっているではないですか!

俺のコードに問題があるのかと思いましたが、どうやら違うみたいで、ここも死んでました。
http://www.ntv.co.jp/tokyomarathon/course/index.html

最新バージョンのUMapはGoogle非対応になってるけど、その辺は関係あるのか?
とにかく困った・・・

Progression Framework



使うか使わないか分かんないけど、とりあえずメモ。
http://progression.libspark.org/

FLASH OOP for ActionScript 3.0


いよいよ出るみたいです。
帯の推薦文がコリン・ムークですね。

Home > ActionScript 3.0 Archive

Search
Feeds

Return to page top