
MYUNGMI’S PARK+
友人の Park Myungmi さんのポートフォリオサイトのお手伝いをしました。
ゴキゲンなイラストがいっぱいあるので是非一度遊びに来てください!

今のところこんなの↑や

こんなの↑だったり

こんなの↑とかがアップされています。
汚れとかはほとんどそのままにしてあります。その方が味があって好いかなと。「めんどくさかったんでしょ?」と言わないよーに。今後徐々に点数も増えていきますので、作品を気に入ってくださった方は是非またのお越しを〜。都合によりRSS対応してませんが。
サイト的にはProgressionの習作という感じで、WordPressと連携しています。
夏休みの宿題ということで8月中に公開してみたものの、調整が必要な箇所がまだまだたくさんあるのでこっそり直していきます。
今後制作中ハマったことや未だ解決していないことなど、ブログにあげていこうと想います。
そんなわけで入れ物は色々怪しいですが、中身はステキなので沢山の方に楽しんでもらえたら本人と俺が喜びます。よろしくお願いしまーす。
credit
ゴキゲンなイラスト : Park Myungmi
その他 : chimanaco(俺)
【Progression】右クリックで表示されるコンテキストメニューを非表示にする。
上記ページを参考に俺もやってみました。Index.asの_onInitに以下の記述を追加して、
//コンテキストメニューを非表示
Progression.uiContextMenu.enabled = false;
CastObjectContextMenu.enabled = false;
CastButtonContextMenu.enabled = false;
このままだとエラーが出たのでimport文を追加。
import jp.progression.core.ui.CastButtonContextMenu;
import jp.progression.core.ui.CastObjectContextMenu;
これで右クリックすると「Powered by Progression 3.1.62」「設定」「Adobe Flash Player 10 について」の表示になりました。フォーラムではimport文を書いてもダメだったとあったけど…何ででしょ。
「印刷する」だけとか個別に設定したい時は以下を参考に設定。
CastObjectContextMenu – Progression 3.1 – API Reference
CastButtonContextMenu – Progression 3.1 – API Reference
OS10.5.6のFireFox3.0.1/Safari3.2.1で検証中、以下のエラーが出て処理が止まってしまった。

スタックオーバーフローとは何ぞ?と調べてみるとこれくさい。
StackOverflowError – ActionScript 3.0 言語およびコンポーネントリファレンス
ActionScript は、スクリプトで使用できるスタックを使い切った場合に StackOverflowError 例外をスローします。ActionScript はスタックを使用して、スクリプト内で行われた各メソッド呼び出しに関する情報 (例えば、メソッドが使用するローカル変数) を保管します。使用できるスタックスペースの量は、システムによって異なります。
StackOverflowError 例外は、無限反復が発生したことを示している可能性があります。その場合、関数に終了条件を追加する必要があります。また、再帰アルゴリズムには適切な終了条件があるものの、単にスタックを使い切ってしまったことを示している可能性もあります。この場合、代わりの方法として、アルゴリズムを反復的に表現するようにしてください。
スタックとはIT用語辞典によると、「最後に入力したデータが先に出力されるという特徴をもつ、データ構造の一種。」とのことなので、吐いたエラーはそんなに覚えらんねーよ、て事か。ローカル変数の使いすぎに注意、というのもどこかで見た。リファレンスの後半パラグラフは、最近やっと読み始めた「詳説 ActionScript 3.0」のP101にも書いてある内容。
今回エラーが出たコードはこんな感じのことをやっていました。
protected override function _onLoad():void {
var sList:SerialList = new SerialList();
(略)
for (var i:int = 0; i < 10; i++) {
var sp:Sprite = new Sprite();
(略)
sp.x = i *10;
sList.addCommand(
new AddChild(ore, sp)
);
}
// 実行したいコマンドを登録します。
addCommand(
(略)
sList
);
}
同じような処理を繰り返すことでスタックを使い切ってる?違う気もするが、同時に実行しても困らないものだったのでSerialListからParallelListに変更したところエラーは出なくなった。Progressionがどうこう言う前に(略)の箇所であれこれやってる部分が問題かも。要検証。
Colin Moock オライリージャパン 売り上げランキング: 17330
|
Progressionで作業中、new DoTweenerのループを作ってSWFProfilerでチェックしていたらメモリがどんどん増えていってしまう。簡略化してるけど要はこんなことをしていました。tween1→tween2→tween1……とループします。
private function tween1():void {
new SerialList(null,
new DoTweener(ore, {
x:500,
time:1
}),
new Func(tween2)
).execute();
}
private function tween2():void {
new SerialList(null,
new DoTweener(ore, {
x:0,
time:1
}),
new Func(tween1)
).execute();
}
解決策は以下のページにありました。
Progressionで起きたメモリリーク
こちらで書いておられる通り、DoTweenerでの記述をTweenerに直してみたら改善されました。
Tweenerでの記述はこんなんになりました。
private function tween1():void {
Tweener.addTween(ore, {
x:500,
time:1
onComplete:tween2
});
}
private function tween2():void {
Tweener.addTween(ore, {
x:0,
time:1
onComplete:tween1
});
}
とりあえずこれでよしとする。
Progressionの次のメジャーアップではメモリ関連の対策に重点が置かれるらしいのでそちらに超期待。
そもそもTweenerのループってもっとンマいやり方あるかも。