カテゴリー:ActionScript

Flex 2(ActionScript3.0) の魅力を再確認!

* Flex 2 の登場にワクワクした!

私には、Adobe Flex 2 が、とても魅力的に思えました。
ベータ版を公開していた頃から、正式公開が待ち遠しくワクワクしていました。
これまで、Flash MXの頃から、新しいバージョンが出るたびに、
Flashのスクリプト言語であるActionScriptは強化されてきました。

Flex 2では、ActionScript3.0でプログラミングを行うのですが、
実行速度が10倍も速くなり、型チェックも強化され、
これまで以上に、楽しくプログラミングができるようになったのです。

Flex 2で何が嬉しいのか考えてみました。

* 待望の本格開発環境がある!

Flex2では、ActionScriptの言語機能が強化されただけではなく、
本格的な、プログラミングの開発環境も提供されることになりました。
はっきり言って、これまでの、Flash ActionScriptの開発環境は、
「Flashのオマケ」という感じでした。
しかし、Flex2では、Javaの統合開発環境であるEclipseをFlex2向けに
チューニングした素晴らしい統合開発環境が用意されました。

便利な補完機能は当然として、コードを書いている途中の構文チェックや、
デバッグでのブレイクポイントなどなど、
プログラミング開発に嬉しい機能が満載です。
こうした機能を利用することで、快適に開発を行うことができます。


* 無料で使える Flex2 SDK がある

上記の開発環境(Flex Builder 2)があれば、鬼に金棒なのですが、
残念ながら無料ではありません。
しかし、嬉しいことに、コンパイラとサンプル等が
無料で配布されています。
これまで、Flashを作るのには、Adobeの販売する(少々高い)製品を
買わなければなりませんでしたが、これからは違います。
Adobeのサイトで、ユーザー登録さえすれば、無料でダウンロードして
利用することができます。


* プログラマーにこそ嬉しいFlex2

Flex2の登場は衝撃的でした。今までFlashは蚊帳の外と感じていた
プログラマーをぐっと、身近に感じるいくつもの理由があったのです。

これまで「プログラマーから見るとFlashはよく分からない世界」という
偏見がありました。確かに、FlashはWebアニメーションの
オーサリングツールなので、デザイナーのためのツールが前面に出ていて、
プログラマーとは無縁のもののように感じられました。

ところが、Flex2では、最終的にFlashファイルを生成するものの、
コンポーネントベースで、ボタンや、テキストボックスを
ペタペタとフォームに配置する(もしくは、XMLでタグを書く)だけで、
画面デザインが完了してしまうのです。

あとは、クリックしたらどうするとか、ユーザーの操作に応じた
イベントを記述していくだけで見た目の良いアプリケーションが
完成してしまうのです。


* 感覚としては、HTMLにJavaScriptを書くのと似ている

Flex2を既存の技術で似ているものと考えると、
HTMLにJavaScriptを書くのに似ています。
画面デザインを、XMLで記述し、そこに動きを加えるための
ActionScriptを書いていくことでアプリケーションを完成させます。

昨今、Ajaxが流行っている背景として、便利なライブラリで
すごいアプリケーションが簡単に構築できるというメリットが
あると思いますが、Flex2では、Ajax以上に、簡単にすごいアプリケーションが
作れるのが魅力です。

Ajaxのライブラリに相当するのが、Flexのフレームワークです。
グリッドやツリーなど、業務に使えるコンポーネントや
Flashの魅力である、MP3再生や、Flashビデオの再生などなど、
Ajax以上に魅力満載です。


* Flashベースである恩恵

従来のWindowsアプリケーションでは、ソフトをダウンロードした後、インストールしなければならず、また、セキュリティの心配もあるので、ユーザーにとって敷居が高いものになっています。

しかし、Flex2で作ったアプリケーションは、Flashをベースとしている(Flashファイルを生成する)ので、Webブラウザ上で動作します。Webページを表示さえすれば、すぐにアプリケーションを利用可能です。

Flashプラグインの普及率はかなり高いので、プラグインだからという敬遠するという方は少ないと思います。また、ほとんどのブラウザでワンクリックでインストールが完了します。

* Java プログラマーなら楽勝!

ActionScript3.0は、文法がJavaと似ていますので、
Javaプログラマーなら、簡単に習得できるようです。
私は、Javaプログラマーでも、若干、言語の習得に時間がかかるのでは
ないかと思っていたのですが、現場で実際に開発されたJavaプログラマーに
話を伺ってみると、それほど習得に時間はかからなかったとの
ことでした。


* すごいアプリがサクサク作れる!

何かを作ろうと思ったとき、「作りたいものがすぐに形になること」の重要性は、開発ツールを選ぶ上で大きなポイントとなります。Flex2なら、豊富なコンポーネントを、画面上にペタペタと貼り付けて、少しのコードを書くだけで、とりあえず動くものを作ることが出来ます。

エディタやリストに加えて、グリッドやバーなど、数多くのコンポーネントを直感的に配置することができます。また、有志の手で多くのコンポーネントが日々公開されている点も見逃せません。

現時点では、Webブラウザ上で動くアプリケーションを作る上で、最も実用的なツールの1つだと言えると思います。


* Flex 2をまとめると..

  • - Adobe Flash をベースにしたツール(多くの環境で動作する)
  • - ブラウザ上で動作するWebアプリを開発できる
  • - OSに関係なく、Windowsでも、Macでも、Linuxでも動く
  • - Java開発で実績のあるEclipseベースの開発環境を使って、さくさく開発可能
  • - コンポーネントがたくさん用意されているので見た目の良いアプリが手軽に作れる
  • - 無償のFlex2 SDKが用意されているので、誰でも開発をはじめられる

参考)Flex2,ActionScript3.0が優れている9の理由とAjaxとの差
http://zapanet.info/blog/item/932

投稿者 kujira : 08:34 | トラックバック

Flash Lite2.0のキャリア動向まとめ

*携帯電話キャリア動向まとめ
http://level0.cuppy.co.jp/2006/10/flashlite20.html

ソフトバンクのFlash Lite2.0がSharedObjectを使えないそうで、
期待していただけに致命的です。
ちょっとした設定ファイルも、サーバー側に保存する必要があるのかぁ。

■ソフトバンク
対応機種:910SH、810SH、811SH、910T、810T、811T
■AU
W43SA、W45T、W43CA、W43H、W43S、W43K、W42SA
■DoCoMo
未定

投稿者 kujira : 20:16 | トラックバック

Flashで様々なサイトからデータを取る

前試した時は、だめだと思っていたけど、 Flashなら、様々なサイトからデータを取ることができるようです。 ===

class test {
    static function main()
    {
        var txt:TextField = _root.createTextField("txt", 100,0,0,400,400);
        txt.text = "*";
        var ld:LoadVars = new LoadVars();
        ld.onData = function (s2) {
            txt.text += ("nadesi.com~" + s2 + "\n");
            //
        };
        ld.load("http://nadesi.com/test.txt");
        var ld2:LoadVars = new LoadVars();
        ld2.onData = function (s) {
            txt.text += ("aoi-project=" + s + "\n");
        };
        ld2.load("http://aoi-project.com/test.txt");
        var ld3:LoadVars = new LoadVars();
        ld3.onData = function (s3) {
            txt.text += ("kujira-test=" + s3 + "\n");
        };
        ld3.load("http://kujirahand.com/test.txt");
    }
}
===
ただ、条件があって、各サイトに、以下のようなcrossdomain.xmlが置かれている必要ありです。 ===

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <allow-access-from domain="*" />
</cross-domain-policy>
===
各所で置かれているAPIでは、だいたい、これが設置されているので、 APIを渡り歩くことができそうです。
投稿者 kujira : 08:37 | トラックバック

MTASCの配列チェック機能を使え!

せっかくActionScript2.0を使っても、配列の中身はどうしても
タイプセーフにならない。
ところが、フリーのActionScript2コンパイラのMTASCは、配列をチェックしてくれる。
===
/*# Strictly typed arrays :*/
var x : /*String*/ Array;
===
こんな感じで書くらしい。

試しに、
===
class a {
function main()
{
var b:/*String*/Array;
b = new Array();
b[0] = 30;
}
}
===
こんなん書いてみたら、無事エラー出ました。
意外と重宝しそう。

投稿者 kujira : 20:24 | トラックバック

mac + ActionScript + vi

Mac 上で、vi で ActionScriptを書く時のTips

「Vim6.3」の場合は以下:
http://www.dango-itimi.com/blog/archives/2005/000738.html

Mac OSX 10.4.8 のvimは、6.2なので、ちょっと手順が違う。

(1)下記のサイトより、ActionScriptの辞書ファイルをダウンロード
http://bitmap.dyndns.org/blog/archives/001207.html

(2)下記のサイトより、ActionScriptのハイライト定義ファイルをダウンロード
http://www.vim.org/scripts/script.php?script_id=1061
(3)Vimのインストールフォルダ /usr/share/vim/vim62 を $VIM と置き換えて読んでください。
(4)辞書ファイルを、$VIMにコピー
(5)ハイライトファイルを、$VIM/syntax/にコピー
(6)$VIM/filetype.vim に以下を追記
===
au BufRead,BufNewFile *.as set filetype=actionscript
autocmd FileType actionscript :set dictionary=/usr/share/vim/vim62/actionscript.dict
===

ちなみに、上記のサイトに書りますが、
と入力すれば、辞書からの検索を行うことが出来ます。
:set complete+=k
とすると、通常の単語補完 から辞書を呼び出せます。

の一行を追加すればよい (k は辞書オプション)。

投稿者 kujira : 12:11 | トラックバック

1文字ずつ処理するときの速度

AS2で一文字ずつ文字列を解析するときは、String.charAt()で特定の文字を抜き出すより、 一度、splitで1文字ずつに区切ってから、配列アクセスした方が圧倒的に早いみたい。 マルチバイトの判別に時間がかかっていると予想されます。 *ベンチ結果 ---( *bench test_arrayChar [0]47 [1]31 [2]31 [3]31 [4]32 [5]31 [6]31 [7]31 [8]32 [9]31 total=328 *bench test_charAt [0]125 [1]141 [2]93 [3]94 [4]94 [5]203 [6]94 [7]93 [8]79 [9]109 total=1125 ---) *検証に使ったMTASC AS2ソース(両方ともマルチバイトに対応) ---( class CharTest { static function test_charAt() { var s:String = ""; var r:String = ""; for (var j = 0; j < 512; j++) s += "0123456789ABCDEF"; for (var j = 0; j < s.length; j++) { var c = s.charAt(j); r += c; } } static function test_arrayChar() { var s:String = ""; var r:String = ""; for (var j = 0; j < 512; j++) s += "0123456789ABCDEF"; var a = s.split(""); for (var i = 0; i < a.length; i++) { r += a[i]; } } static function bench(func:Function, test_name:String) { // test var counter:Array = new Array(); for (var i = 0; i < 10; i++) { var starttime:Date = new Date(); func(); var endtime:Date = new Date(); counter.push( endtime.getTime() - starttime.getTime() ); } // view result trace("*bench " + test_name); var total:Number = 0; for (var i = 0; i < counter.length; i++) { total += counter[i]; trace("["+i+"]"+counter[i]); } trace("total=" + total); } static function main():Void { bench(test_arrayChar, "test_arrayChar"); bench(test_charAt, "test_charAt"); } } ---) ちなみに、JavaScriptで使えるはずの以下の記法は、AS2では動かなかった。 ---( for (i in s) { x = s[i]; ... } ---)
投稿者 kujira : 01:09 | トラックバック

Flash でベンチマーク

Flashでベンチマークをとるときは、Dateクラスの、getTime()を使うと良いみたいです。 ミリ秒単位で時間が調べられます。 ---( var starttime:Date = new Date(); // --- 何か処理 var s:String = ""; var r:String = ""; for (var j = 0; j < 1024; j++) s += "0123456789ABCDEF"; for (var j = 0; j < s.length; j++) { var c = s.charAt(j); r += c; } // --- var endtime:Date = new Date(); trace("total=" + (endtime.getTime() - starttime.getTime())); ---)
投稿者 kujira : 00:57 | トラックバック

ActionScript3のサンプルをいくつか作ってみる

次の段階の準備としていくつかActionScript3のサンプルを作ってみました。

やはりコード補完機能がある、Flex2uilder2を使うのが楽。他にも、いくつかエディタを使ってみたけど、補完がないとヘルプとエディタを何度も行き来しないといけなくて疲れました。

そこで、FlexBuilder2を買おうと思って、購入ページに行くと7万円弱・・・。Flashとほぼ同じ値段かぁ。この値段だと気軽に買えないなぁという感想。しばらくは、体験版で様子を見ることにしました。

投稿者 kujira : 13:00 | トラックバック

Flash Lite 2対応の端末

国内では、来春以降の携帯電話端末には、Flash Lite 2が搭載機種が出るだろうとの記事を読んだのですが、auのページを見たら、既にFlash Lite 2対応の端末情報が出ていました。
http://www.au.kddi.com/ezfactory/tec/spec/new_win/ezkishu.html

Flash Lite 2では、ActionScript2が使えたり、画像, オーディオ, ビデオ, XML, SWFの動的読込みをサポートしているのでJavaアプリに匹敵するアプリが作れるようになります。楽しみです。

投稿者 kujira : 04:52 | トラックバック

私の書いたFlash ActionScriptの本が出ます!

いよいよ、私の書いたFlash ActionScriptの本が出ます!!

「ゲーム作成を通してを学習する」とActionScriptの基本的な文法から実践的なプログラミングまでを修得することができる入門書です。変数や制御文などの基本的な文法から始まってオブジェクト指向、クラスといったActionScriptの基本技術をゲームを作りながら、理解していくチュートリアル形式の入門書です。

http://book.mycom.co.jp/book/4-8399-1791-4/4-8399-1791-4.shtml

Flash ActionScript本出ます!
Flash ActionScript本出ます! posted from フォト蔵

やっぱり、本を書くって大変です。
身近な皆様には、アドバイスをもらったり、校正を手伝ってもらったり、
大変お世話になりました。

投稿者 kujira : 02:29 | トラックバック

ActionScript3(Free Flex SDK)のインストールまとめ

いつのまにか、ActionScript3(Free Flex SDK)がベータ版でなくなっていたので、インストールの方法などをWikiにまとめてみた。 クジラ Flash ActionScript3 Tips ( http://aoi-project.com/flash/wiki/wiki.aoi ) Flash ActionScript3に関するメモとTipsのページにする予定。
投稿者 kujira : 15:54 | トラックバック

ActionScript2.0でMD5

ActionScript2.0でMD5を得たいと思い、標準クラスをチェックしたけどなかったので、検索してみたら、MD5を得る関数が見つかりました。 MD5 in ActionScript: http://www.nurs.or.jp/~b3/scripts/md5as/ ただ、せっかくなのでASのクラスとして使いたかったので、上のソースをクラスにしてみました。 以下のような感じで使えます。 ---( hash_str = new MD5("strstr...").value; trace(hash_str); ---) 関数の場合と違って、include したりしなくても良いのが唯一のメリットです。 それで以下のプログラムをMD5.as という名前で保存しておきます。 ---( //---------------------------------------------------------------------- // MD5 Message-Digest // RFC1321 //---------------------------------------------------------------------- // (クラス化 ) http://kujirahand.com // (オリジナル) http://www.nurs.or.jp/~b3/scripts/md5as/ //---------------------------------------------------------------------- // USES: // hash = new MD5(str).value; // hash = new MD5(str).toString(); //---------------------------------------------------------------------- class MD5 { var g_dataArray:Array; function MD5(seed) { g_dataArray = MD5_hash(seed); } function toString() { var i, out, c; out = ""; for ( i = 0; i < 16; i++ ) { c = g_dataArray[i]; out += "0123456789abcdef".charAt((c >> 4) & 0xf); out += "0123456789abcdef".charAt(c & 0xf); } return out; } function get value():String { return this.toString(); } var MD5_T = [ 0x00000000, 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 ]; var MD5_round1 = [ [0, 7, 1], [1, 12, 2], [2, 17, 3], [3, 22, 4], [4, 7, 5], [5, 12, 6], [6, 17, 7], [7, 22, 8], [8, 7, 9], [9, 12, 10], [10, 17, 11], [11, 22, 12], [12, 7, 13], [13, 12, 14], [14, 17, 15], [15, 22, 16] ]; var MD5_round2 = [ [1, 5, 17], [6, 9, 18], [11, 14, 19], [0, 20, 20], [5, 5, 21], [10, 9, 22], [15, 14, 23], [4, 20, 24], [9, 5, 25], [14, 9, 26], [3, 14, 27], [8, 20, 28], [13, 5, 29], [2, 9, 30], [7, 14, 31], [12, 20, 32] ]; var MD5_round3 = [ [5, 4, 33], [8, 11, 34], [11, 16, 35], [14, 23, 36], [1, 4, 37], [4, 11, 38], [7, 16, 39], [10, 23, 40], [13, 4, 41], [0, 11, 42], [3, 16, 43], [6, 23, 44], [9, 4, 45], [12, 11, 46], [15, 16, 47], [2, 23, 48] ]; var MD5_round4 = [ [0, 6, 49], [7, 10, 50], [14, 15, 51], [5, 21, 52], [12, 6, 53], [3, 10, 54], [10, 15, 55], [1, 21, 56], [8, 6, 57], [15, 10, 58], [6, 15, 59], [13, 21, 60], [4, 6, 61], [11, 10, 62], [2, 15, 63], [9, 21, 64] ]; var MD5_round = new Array( new Array(MD5_F, MD5_round1), new Array(MD5_G, MD5_round2), new Array(MD5_H, MD5_round3), new Array(MD5_I, MD5_round4) ); function MD5_F(x, y, z) { return (x & y) | (~x & z); } function MD5_G(x, y, z) { return (x & z) | (y & ~z); } function MD5_H(x, y, z) { return x ^ y ^ z; } function MD5_I(x, y, z) { return y ^ (x | ~z); } function MD5_pack(n32) { return new Array(n32 & 0xff, (n32 >>> 8) & 0xff, (n32 >>> 16) & 0xff, (n32 >>> 24) & 0xff); } function MD5_hash(seed) { var f, r, tmp; var i, j, k; var state = new Array(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476); var abcd = new Array(0, 1, 2, 3); var x = new Array(16); var s = new Array(4); var dataArray = new Array(); var currentChar = 0; // // UCS2 or 4 -> UTF-8 // http://www.unicode.org/versions/corrigendum1.html // for (i = 0; i < seed.length; i++) { j = seed.charCodeAt(i); if ( j <= 0x7F ) { dataArray[currentChar++] = j; } else if ( j <= 0x7FF ) { dataArray[currentChar++] = ((j >> 6) & 0x3F) | 0xC0; dataArray[currentChar++] = ( j & 0x3F) | 0x80; } else if ( j <= 0xFFFF ) { dataArray[currentChar++] = ((j >> 12) & 0x0F) | 0xE0; dataArray[currentChar++] = ((j >> 6) & 0x3F) | 0x80; dataArray[currentChar++] = ( j & 0x3F) | 0x80; } else { dataArray[currentChar++] = ((j >> 18) & 0x07) | 0xF0; dataArray[currentChar++] = ((j >> 12) & 0x3F) | 0x80; dataArray[currentChar++] = ((j >> 6) & 0x3F) | 0x80; dataArray[currentChar++] = ( j & 0x3F) | 0x80; } } var len = dataArray.length; var index = len & 0x3f; var padLen = ( index < 56 )? 56 - index : 120 - index; if ( padLen > 0 ) { dataArray[currentChar++] = 128; for (i = 0; i < padLen-1; i++, currentChar++) { dataArray[currentChar] = 0; } } dataArray = dataArray.concat(MD5_pack(len * 8), MD5_pack(0)); len += padLen + 8; for ( k = 0; k < len; k += 64 ) { for ( i = 0, j = k; i < 16; i++, j += 4 ) { x[i] = dataArray[j] | (dataArray[j+1] << 8) | (dataArray[j+2] << 16) | (dataArray[j+3] << 24); } for ( i = 0; i < 4; i++ ) { s[i] = state[i]; } for ( i = 0; i < 4; i++ ) { f = MD5_round[i][0]; r = MD5_round[i][1]; for ( j = 0; j < 16; j++ ) { MD5_apply_round(x, s, f, abcd, r[j]); tmp = abcd[0]; abcd[0] = abcd[3]; abcd[3] = abcd[2]; abcd[2] = abcd[1]; abcd[1] = tmp; } } for ( i = 0; i < 4; i++ ) { state[i] += s[i]; state[i] = MD5_number(state[i]); } } dataArray = new Array(); return dataArray.concat(MD5_pack(state[0]), MD5_pack(state[1]), MD5_pack(state[2]), MD5_pack(state[3])); } function MD5_number(n) { while ( n < 0 ) { n += 4294967296; } while ( n > 4294967295 ) { n -= 4294967296; } return n; } function MD5_apply_round(x, s, f, abcd, r) { var a, b, c, d; var kk, ss, ii; var t, u; a = abcd[0]; b = abcd[1]; c = abcd[2]; d = abcd[3]; kk = r[0]; ss = r[1]; ii = r[2]; u = f(s[b], s[c], s[d]); t = s[a] + u + x[kk] + MD5_T[ii]; t = MD5_number(t); t = (t << ss) | (t >>> (32 - ss)); t += s[b]; s[a] = MD5_number(t); } } ---)
投稿者 kujira : 00:49 | トラックバック

AS3でモグラ叩き

AS3の練習を兼ねて、モグラ叩きを作ってみた。このくらいのものなら、AS2とさほど変わらない感じです。 イベントの登録に一貫性があるので、AS2より混乱しなくなったかも。Eclipseが独自変数などを補完してくれるのが一番うれしいですね。 ---( package { import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFieldType; import flash.display.Graphics; import flash.events.Event; import flash.events.MouseEvent; public class test extends MovieClip { private var score:Number = 0; // スコア private var score_txt:TextField; // スコア表示用 private var counterMogura:Number = 50; // モンスター生成タイミング private var mogura_array:Array; // モンスター管理用 public function test() { mogura_array = new Array(); score_txt = new TextField(); // スコア表示テキストを作成 score_txt.x = 10; score_txt.y = 10; score_txt.type = TextFieldType.DYNAMIC; score_txt.text = "SCORE: 0"; this.addChild(score_txt); this.addEventListener(Event.ENTER_FRAME, this.onEnterFrame); } private function onEnterFrame(event:Event):void {// 毎フレーム発生するイベント counterMogura++; if (counterMogura > 20) { // モンスター出現? counterMogura = 0; if (mogura_array.length < 70) { var mogura_mc:MovieClip = new MovieClip(); // モグラ生成 mogura_mc.graphics.beginFill(Math.random() * 0xFFFF); mogura_mc.graphics.drawEllipse(0,0,30,30); mogura_mc.graphics.endFill(); mogura_mc.x = Math.random() * root.width; mogura_mc.y = Math.random() * root.height; mogura_array.push(mogura_mc); this.addChild(mogura_mc); // イベントの登録 mogura_mc.addEventListener(MouseEvent.CLICK, mogura_onClick); } } else { var i:Number; // モンスターを動かす for (i = 0; i < mogura_array.length; i++) { var mc:MovieClip = mogura_array[i]; mc.x += Math.random() * 24 - 12; mc.y += Math.random() * 24 - 12; } } } private function mogura_onClick(event:Event):void { // モグラをクリックした時のイベント var mc:MovieClip = MovieClip(event.target); var index:Number = mogura_array.indexOf(mc); if (index >= 0) { score++; score_txt.text = score.toString(); mogura_array.splice(index, 1); this.removeChild(mc); mc = null; } } } } ---)
投稿者 kujira : 23:34 | トラックバック

AS3でHello World

おきまりのHello Worldを作ってみました。 ---( package { import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFieldType; public class test extends MovieClip { public function test() { var txt:TextField = new TextField(); txt.x = 10; txt.y = 10; txt.type = TextFieldType.DYNAMIC; txt.text = "Hello World!"; txt.selectable = false; this.addChild(txt); } } } ---) ※TextFieldTypeには、"DYNAMIC"(入力できない)と"INPUT"(入力可能)の2つが選べるようです。
投稿者 kujira : 17:47 | トラックバック

ActionScript3.0をチェック

ActionScript3.0 をチェックしてみた。画面に赤い丸を描くだけのプログラム。 ---( package { import flash.display.MovieClip; import flash.display.Graphics; public class test extends MovieClip { public function test() { this.graphics.beginFill(0xFF0000); this.graphics.drawCircle(50,50,30); this.graphics.endFill(); } } } ---)
投稿者 kujira : 17:09 | トラックバック