Flex
Flex(というかActionScript3)では、メソッドやフィールドに名前空間を設定できます。 名前空間を設定されたメソッドは、名前空間を明示(またはuse)して呼び出す必要があります。 publicやprivateといったアクセス制御指定子も特殊な名前空間として実装されて…
Flexでprivateなクラスを定義する場合、パッケージ定義の外部で定義します。 Flexでは、1つのソースファイルに複数のクラスを含めることが可能ですが、 ファイルの外部にあるコードで使用できるのは各ファイルのクラス 1 つだけ。各ファイルのクラスのうち1…
Proxyを使うと、オブジェクトのメソッド呼び出しやプロパティへのアクセスをインターセプトする仕組みが作れます。 機能的にはJavaのProxyに近い感じです。 メソッド以外にも、属性へのアクセスや「for...in」「for...each in 」で属性を列挙された場合の動…
クリップボードの値を更新するサンプルです。System#setClipboard()でさくっと設定できます。 package { import flash.display.*; import flash.system.System; public class SetClipBoard extends Sprite { public function SetClipBoard(){ // クリップボ…
グラデーションする四角を描くには、Graphics#beginGradientFill()を設定したあと、Graphics#drawRect()で四角を描画します。 グラデーションの種別(線or放射)とか色など、いろいろパラメータが指定できますが、まぁ、ドキュメントを参照ということで。(→Gra…
FlexというかActionScriptで、HTTPでサイトに接続しデータを取得するサンプルです。クロスドメインまわりのことがまだ良くわかってないので、とりあえず同じサイトのデータを取得してます。 package { import flash.display.Sprite; import flash.text.*; im…
ActionScript3とかもはや記憶にあるはずもなく、「まぁ、JavaScriptと似たようなもんだろー」、ということで気合で書き進めているわけですが、ここで一つ大きな違いを発見。ActionScript3ではthisが省略できるのです。 package sample { public class Kitten…
今更ながらlog.asなるものを発見したので使ってみます。これを使うと、「log()」関数1発で、FlexからFireBugのコンソールにデータを出力することができます。1つのソースファイルだけでできていて、プロジェクトへの導入も簡単。 log.asのソースをコピーして…
as3corelibで提供されているJSONユーティリティを使って、JSONのエンコードとデコードを行うサンプルです。 package { import flash.display.*; import flash.text.*; import com.adobe.serialization.json.JSON; public class JsonSample extends Sprite { …
Flex SDK 3.1.0をダウンロードすると、flexTasksなるAntタスクが添付されていたので、それを利用してのmxmlのコンパイルを試してみました。以下、手順のメモです。 1.flexTasks.jarをAntのライブラリに追加する。 Flex SDKのアーカイブを展開したディレクト…
やっぱり、ちゃんと測ってみようかな。ということで、プログラム上で画像を描き終わるまで(=graphics.drawRectやctx.fillRectから復帰するまで)の処理時間を出力するようにしてみました。 →Flashで描く →Canvas+JavaScriptで描く(ExplorerCanvasを設定済み。…
FlashとCanvas+JavaScriptのどっちが描画が早いか、四角を16*16*16=4096個描くスクリプトを書いて試してみました。 →Flashで描く →Canvas+JavaScriptで描く(ExplorerCanvasを設定済み。IEでも見れます。) ちゃんとは計ってないけど、何回かリロードして試し…
YahooのUIコンポーネントライブラリ「ASTRA」を使って棒グラフを描いてみます。 ダウンロード Flex SDKでASTRAを使うために必要なモノは次の2つです。 ASTRA ASTRAのサイトからダウンロードします。 Flash CS3のコアクラス(fl.core.UIComponentなど)のソース…
ビヘイビアを使うと、UIコンポーネントに簡単にエフェクトを適用できます。 ビヘイビア = トリガ + エフェクト。マウスオーバーなどのイベント(トリガ)に、イベント発生時の効果(エフェクト)を組み合わせたもの。 mxml内で宣言的に設定することができます。 …
Flexアプリケーションの外観は、スタイルの設定で変更できます。 アプリケーションの背景色変更のサンプル サンプル: <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Style> Application { backgr…</mx:style></mx:application>
swfからJavaScriptの関数を呼び出すには「ExternalInterface」を使います。サンプル(ExternalInterfaceSample.as): package { import flash.display.*; import flash.external.*; /** * メインクラス */ public class ExternalInterfaceSample extends Sprit…
「flash.display.SimpleButton」を使うと簡単にボタンを作成できます。基本的な使い方は次の通り。 SimpleButtonのインスタンスを作成します。 初期状態、押された状態、マウスが乗った状態のUIをそれぞれ指定します。 あたり判定に使うDisplayObjectを設定…
画像をswfに埋め込むことで、ロードによる遅延なく画像を表示することができます。 ○外部からの読み込みと違い、swfと共にダウンロードされるので読み込みに時間がかからない。 ×swfのサイズが大きくなる。 ×画像を差し替えるにはswfの再作成が必要。 埋め込…
外部イメージをロードして貼り付けるにはflash.display.Loaderを使用します。単純なサンプル(SWFと同じデイレクトリの画像を読んで表示する): package { import flash.display.*; import flash.net.*; /** * メインクラス */ public class ShowImage extends…
MXMLを使わずに、ActionScriptだけでUIを作ることもできます。作り方は次のとおり。 メインクラスを作る。このクラスは「flash.display.Sprite」を継承させる。 メインクラスのコンストラクタで貼り付けるUIコンポーネントを生成。 作成したUIコンポーネント…
MXMLで定義したボタンが押された時のイベントを拾います。 イベントプロパティ(clickやactivateなど)をキー、イベント発生時の処理を値としてボタンのプロパティに設定すればOKです。 利用可能なイベントプロパティはAdobe Flex 2 リファレンスガイドの各UI…
Flexのコンパイルを高速化できる「Flex Compiler Shell」を使ってみました。(via 川o・-・)<2nd life - ActionScript3 (mxmlc) でのコンパイルを100倍速にする方法) インストール Flex Compiler Shellから「flex_compiler_shell_012307.zip」をダウンロー…
インスタンスから取得したメソッド(これをバインドメソッドと呼びます。)は、取得元のインスタンスと関連づけられています。バインドメソッド内の「this」は取得元のインスタンスになります。Kitten.as: package { public class Kitten { public function Ki…
get,set修飾子でメソッドをアクセサにできます。アクセサを使うとインスタンスのプロパティのように「.」シンタックスで値の参照や設定ができます。Kitten.as: package { public class Kitten { // プロパティ。privateなので外部からはアクセスできない。 p…
クラスをダイナミック(dynamic)にすると、実行時にプロパティやメソッドを追加できます。クラス定義(Kitten.as): package { // dynamicクラス public dynamic class Kitten { public var name:String = "mii"; public function run():String { return "run!"…
argumentsは関数に渡された引数が格納されるオブジェクトです。 インデックスを指定して引数の値を取得できます。(arguments[0]) arguments.length で引数の数を取得できます。 arguments.callee で関数を再実行します。これで再帰を実現可能です。 function…
for文は3つあります。 「for」は初期条件、繰り返し条件、継続処理からなるよくある(?)forです。javaのforと同じ。 「for in」「for each in」はオブジェクトのプロパティを列挙します。 「for in」では、プロパティのキー(配列の場合、インデックス)が順番…
XMLリテラルとかあるわけですよ。 // XMLリテラル public const xml:XML = <kittens> <kitten>mii</kitten> <kitten>kuro</kitten> <kitten>shiro</kitten> </kittens>; // メイン public function main():void { for each (var child in xml.child("*")) { stdout.text += child.name() + ":" + child.text() + "\n"; } } コンパイ…
変数はvar,定数はconstで宣言します。変数は変更できますが、定数は変更不可です。 変数 <アクセス指定子> var <変数名>:<型> = <初期値>; 定数 <アクセス指定子> const <変数名>:<型> = <初期値>; サンプル <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete = "main()" > </mx:application>
クラスを作成して、MXML内のスクリプトから呼び出します。 クラス定義 <クラス属性 .. > class <クラス名> { ... } でクラスを定義します。 クラス属性でクラスの公開範囲や継承の可/不可などを制御できます。(publicとかfinalとか。) 外部から使用するクラ…