AS3のメモリリークはファックだぜぇ!!と嘆いている全国35人(含む自分)ぐらいのみなさまコンニチハ。 現行案件でメモリリーク地獄にまきこまれて、どうにかこうにか解決策を考えてたら、以下のようなことに気がついた。 弱参照のDictionaryのオブジェクトキーを利用して、対象のオブジェクトがガベッジコレクションされたかどうかを見張ることができるんじゃね?? つまりTimerでDictionaryを見張ってキーが消滅した瞬間が、そのままそのキーとして使われていたオブジェクトがガベッジコレクションされたタイミングなわけです。グローバルな弱参照Dictionaryを作ってその挙動を見張れば、onGarbageCollection イベントを発行できるし、DictionaryのキーをダンプすればGCされそこねたオブジェクトの一覧が取得できるんじゃないかと。 うん、なんだか結構画期的な概念を唱えてる
とりあえず、AS3によるオートカーニングエンジンの雛形を作ってみた。 オートカーニングエンジン1号。 ↑はとりあえず、平仮名と片仮名だけいれたテキストフィールドで入力可能なサンプル。 どんなもんでしょう? なんとなく機能しているよね。 これをベタ組みからの進歩とみなすか、中途半端なカーニングならベタ組みのほうがいいと考えるかは人によると思う。自分的には、タイトルレベルだったら多少アレでも字詰めされてるほうがいい気がする。 まぁ実際には、精度の問題はカーニングペアをひたすら入力すれば解決する。50音の二乗は5000組ぐらいだけど、「 *ト 」といった感じに、ワイルドカードでのカーニング指定も対応したので、クリティカルな文字詰めだけに限定すれば1000個も設定すればOKなはず。中国とかに外注したいけど、中国人は日本語の字詰めできないだろうしなぁ・・・ 誰がカーニング設定するのかが最大の問題。
いまだけヘアマックスの偽物やヘアマックスの最安値は?ってどう? 今住んでるマンションは大きめなので、増加がたくさん入れられて本当に面倒です。ヘアマックスの偽物をポスティングするんだったら、わずかな労力で消費できるわけで、ヘアマックスの最安値は?があるはずもないです。 ヘアマックスの最安値は?が何枚も入っていたり、封をされていたりして、ヘアマックスの最安値は?しにくい状態にされているとイライラします。 税込をみてほしいための工夫なのでしょうが、問題があればみますし、なければみません。 レーザー機器だけでなく、労力も無駄になっています。税込も処分に時間を使わされるのがヘアマックスの偽物がつのります。 邦画って、よく採算が取れているなと感心します。 ヘアマックスの偽物では盛り返してるようですけど、どうしても洋画ほど作り込まれていないので、世界観に没頭できません。 髪質めいた感じがするので、ヘアマ
いまだけヘアマックスの偽物やヘアマックスの最安値は?ってどう? 今住んでるマンションは大きめなので、増加がたくさん入れられて本当に面倒です。ヘアマックスの偽物をポスティングするんだったら、わずかな労力で消費できるわけで、ヘアマックスの最安値は?があるはずもないです。 ヘアマックスの最安値は?が何枚も入っていたり、封をされていたりして、ヘアマックスの最安値は?しにくい状態にされているとイライラします。 税込をみてほしいための工夫なのでしょうが、問題があればみますし、なければみません。 レーザー機器だけでなく、労力も無駄になっています。税込も処分に時間を使わされるのがヘアマックスの偽物がつのります。 邦画って、よく採算が取れているなと感心します。 ヘアマックスの偽物では盛り返してるようですけど、どうしても洋画ほど作り込まれていないので、世界観に没頭できません。 髪質めいた感じがするので、ヘアマ
いまだけヘアマックスの偽物やヘアマックスの最安値は?ってどう? 今住んでるマンションは大きめなので、増加がたくさん入れられて本当に面倒です。ヘアマックスの偽物をポスティングするんだったら、わずかな労力で消費できるわけで、ヘアマックスの最安値は?があるはずもないです。 ヘアマックスの最安値は?が何枚も入っていたり、封をされていたりして、ヘアマックスの最安値は?しにくい状態にされているとイライラします。 税込をみてほしいための工夫なのでしょうが、問題があればみますし、なければみません。 レーザー機器だけでなく、労力も無駄になっています。税込も処分に時間を使わされるのがヘアマックスの偽物がつのります。 邦画って、よく採算が取れているなと感心します。 ヘアマックスの偽物では盛り返してるようですけど、どうしても洋画ほど作り込まれていないので、世界観に没頭できません。 髪質めいた感じがするので、ヘアマ
ActionScriptの言語仕様とかバグとかの理解度テストを作ってみました。全部出来たらかなり変態チックだと思います。 次の各コードを実行したとき出力される値を答えてください。勿論、Flash使わずに。 解答は次のエントリにポストします。 1. var a:Number = 0; trace(a++); var b:Number = 0; trace(++b); 2. var list:Array = [1,2,3,4,5]; var copy:Array = list; copy[0] = 6; trace(list); trace(copy); 3. var o:Object = new Object(); o.a = 1; o.f = function () : Void { trace(this.a); } var f:Functi
知らないと損をするActionScript3.0の新文法をまとめて紹介します。 複数の変数の出力が楽に:trace 引数に変数を複数渡すと、自動的にスペースで区切って表示をしてくれます。 var a:int = 0; var b:String = 'hgoe'; trace(a, b); // Output: 0 hoge 要素の巡回が楽チン:for each 今まで、配列の要素を巡回するのは、次のようにするのがセオリーでした。 for (var i:Number = 0; i < list.length; ++I) { trace(list[i]); } しかし、もうこんな面倒な事は必要ありません。次のように書けば、list内の要素がひとつずつelementに代入されてループします。 for each (var element:Object in list) {
昨日のエントリがfladdict.netさんで紹介されて浮かれております。という訳で、続きです。 そもそも、どういう時にスクリプトエンジンが必要になるのか?という所ですが、元々このエンジンはゲームを製作しやすくしようプロジェクト(今勝手に命名)の一環として作ったもので、やはりゲーム系なんかで役に立ちそうです。 とりあえず、このスクリプトエンジンの特徴と仕様を書いてから、いくつか使用例を挙げてみるので、そこからスクリプトエンジンの使い道を探ってみてください(笑 スクリプトエンジンの動作サンプル スクリプトエンジンのコード一式(リファクタリングしきれてません。すいません) ではまず、特徴&仕様。 バイトコードインタプリタ このスクリプトエンジンでは、一旦スクリプトをバイトコード(的なもの)に変換してから独自のVirtualMachine上で実行するという、JavaとかFlashと
Flash MXから実装されたイベントハンドラメソッドの定義をクリアしたいとき、delete演算子を使わずに、undefinedやnullを代入する人がいます。イベントハンドラメソッドは、delete演算子で削除した方が安全です。 1. ボタンイベントハンドラメソッドのカーソル MovieClipシンボルの第1フレームに、以下のフレームアクションを設定してみましょう。MovieClipにボタンアクション用のMovieClip.onReleaseイベントハンドラメソッドが定義されます。 スクリプト001■テスト用サンプル // MovieClip: ボタン用 // 第1フレームアクション this.onRelease = function() { trace(this); this.onRelease = undefined; // [1] // delete this.onRelease
Read it now on the O’Reilly learning platform with a 10-day free trial. O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers. Book description ActionScript 3.0 is a huge upgrade to Flash's programming language. The enhancements to ActionScript's performance, feature set, ease of use, cleanliness, and sophisti
Adobe Flash CS3 Professional ActionScript 3.0 □02 スクリプトによるアニメーション 02-01 関数・メソッドを使う 02-02 変数を使う 02-03 関数(function)を定義する 02-04 setInterval()関数を使う 02-05 イベントリスナーを使う 02-06 タイムライン変数とローカル変数 02-07 イベントのことをもう少し知ろう Column 02 Timerクラス ○02-01 関数・メソッドを使う 60秒で1回転する秒針のアニメーションをつくってみましょう。まず、前章「ActionScript 3.0を使ってみよう」で学習した知識でも、それらしいものはできそうです。 ●タイムラインで1秒をカウントする フレームレートがデフォルトの12fpsだとすると、タイムラインに12フレーム作成して、アニメーションをルー
Platform: All Version: Flash 9 (public alpha) and above ActionScript 3.0では、プライベートなコンストラクタ関数を定義することができません。本稿では、まずActionScript 3.0のコンストラクタ関数について、簡単に説明します。つぎに、プライベートなコンストラクタ定義が必要な例として、デザインパターンのSingletonをどう実装するか考えてみたいと思います。 なお、クラスやActionScript 3.0の基礎知識を前提とします。ActionScript 3.0の基本については、Adobe Flashデベロッパーセンター「ActionScript 3.0書き方教室」をご参照ください。 1. コンストラクタ関数 ActionScript 3.0のクラスは、つぎのようなスタイルで定義します[*1]。クラス本体に定義さ
コンストラクタはクラス名と同じ名前を持つ関数で、インスタンスを初期化する際に呼び出されます。コンストラクタは初期化時の定型処理を記述するのに使われますが、特に定義されていなくても文法上の問題は有りません。 class SampleClass { // コンストラクタ定義 public function SampleClass() { // 初期化処理の記述 } } ActionScript では基本的に関数のオーバーロードができないのに倣って、コンストラクタも一つしか定義することができません。コンストラクタを定義する際は、とりあえず引数無しにするか、引数を持つ場合はデフォルト値を指定するというケースが多くなりそうです。 もう一つのコンストラクタの特徴は、返り値の型を指定しないことです。また、AS3 ではコンストラクタのアクセス修飾子として public のみが指定できます。 コンストラクタ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く