正規表現の「先読み」
Posted 2010年4月16日 | Auther ダダ | Category PC・デジタル | Tag タグ: , ,

数値を3桁ごとに「,(カンマ)」で区切るのを調べていたら
WadadanetさんのAS3で数字を3桁毎にコンマ区切りにするが見付かり
目的を達することは出来たのですが、構文の中に「?=」や「?:」など意味のわからないものが。

Twitterで質問してみたら正規表現の「先読み」らしいことがわかりました。

大ざっぱに言うと、
マッチングはするけど、カーソルは先読み部分の前で止めちゃうよ
ということなのですね。

そんなわけで自分向けメモ。
javascriptで書くとこんなん。

var maho = "マホは咲の真似してリンシャンあがった";

document.write(
	maho.replace( /(マホは(?=.+あがった)咲の真似して)/, "$1カンして" )
);
// 先読みを使った結果
// マホは咲の真似してカンしてリンシャンあがった

document.write(
	maho.replace( /(マホは咲の真似して).+あがった/, "$1カンして" )
);
// 先読みを使わない結果
// マホは咲の真似してカンして

先読みを使うと「あがった」の部分までマッチングするけど、
その直前までしか「$1」で取得してません。

従来の方法だと「あがった」まで取得してしまうので、
同じように置換すると後半部分が消えてます。

従来方法で同じ結果を出すならこんな感じでしょうか。

document.write(
	maho.replace( /(マホは咲の真似して)(.+あがった)/, "$1カンして$2" )
);
// マホは咲の真似してカンしてリンシャンあがった

これでもいいですが、「リンシャンあがった」の部分になんらかの処理を加えたい時、
カーソルは通り過ぎているのでちょっと面倒なことになります。

咲-Saki- ラブじゃん マホちゃんの必殺技完成! 咲-Saki- ラブじゃん マホちゃんの必殺技完成!
スクウェア・エニックス

スクウェア・エニックス 2010-01-29
売り上げランキング :
おすすめ平均

Amazonで詳しく見る by G-Tools

Progressionのコマンドで分岐
Posted 2010年3月6日 | Auther ダダ | Category PC・デジタル | Tag タグ: , ,

コマンドリストを実行している時、
途中のコマンドの結果によって分岐させたい時の方法。

var hogeCommand:HogeCommand = new HogeCommand();
var serial:SerialList = new SerialList();

serial.addCommand( hogeCommand );

serial.addCommand( new Func( function():void {
	// コマンドの結果で分岐
	if ( hogeCommand.value ) {
		serial.insertCommand( new Trace("コマンドを挟む"));
	}
}));

serial.execute();

HogeCommandクラスの実行結果を受け取りたいので
インスタンスを先に作っておきます。

var hogeCommand:HogeCommand = new HogeCommand();

今回のキモ「insertCommand」です。
これにより動的にコマンドを挿入させることができます。

	// コマンドの結果で分岐
	if ( hogeCommand.value ) {
		serial.insertCommand( new Trace("コマンドを挟む"));
	}

このやり方についてはIs It So Easy?さんが詳しく書かれています。
this.parentで挿入することも出来るんですねー。

[改訂版]ActionScript3.0プログラミング入門 for Adobe Flash CS4/CS3 [改訂版]ActionScript3.0プログラミング入門 for Adobe Flash CS4/CS3

ビー・エヌ・エヌ新社 2009-07-23
売り上げランキング : 79902

Amazonで詳しく見る by G-Tools

Progression4のリソース系で謎のエラー
Posted 2010年3月2日 | Auther ダダ | Category PC・デジタル | Tag タグ: , ,

いったい何がキッカケだったのかまったくわからないけど、ある日突然出てきたエラー。

Resource.as、行 44
1004: 名前空間が見つからないか、コンパイル時定数ではありません。
progression_internal static const $collection:IdGroupCollection = new IdGroupCollection();

いろいろ試して、音声ファイルがリンケージされていると発生することがわかりました。
下記のようにごく一般的なファイルを普通にリンケージしただけえす。

ファイル:testse.wav
クラス:testse
基本クラス:flash.media.Sound

「最初のフレームに書き出し」のチェックを外すとエラーは出ません。

しかし上記チェックを外すわけにもいかず色々試していたら、
Index.asに下記の行を追加したらエラーが出なくなりました。

function hogehoge():void {
	getResourceById("hoge").data;
}

この関数はどこからも呼ばれませんが、記述しておくだけで良いようです。

バグなのか仕様なのかはわかりませんが、公式のフォーラムに報告しておきました。

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

ソシム 2009-09-09
売り上げランキング : 83197
おすすめ平均

Amazonで詳しく見る by G-Tools

Progressionで複数ファイルをまとめて読む
Posted 2010年2月21日 | Auther ダダ | Category PC・デジタル | Tag タグ: , ,

Progressionのリソースキャッシュと、複数ファイル読み込みの組み合わせが
便利すぎて思わず漏らしてしまいそうです(チョロリ)。あっ。

外部画像を読み込んで一覧表示させるものを作ってまして、
各サムネイル内で読み込むようにしてたんですが、
最初にまとめて読むように変更しました。

というのも、リソースキャッシュのおかげで
画像の流用がすごく簡単に行えるようになったからです。

Progression4で外部ファイルの使い回しを簡単に 》 RuputerFan

リソースキャッシュについては以前かいたこの日記を参照。

続きを読む

ProgressionのURLアンカー遷移を無効にする
Posted 2010年2月20日 | Auther ダダ | Category PC・デジタル | Tag タグ: , ,

Progressionが備えているURLアンカー(URLの後の「#~」)によるページ遷移は
フルFlashサイトを作る際にはとても便利で素晴らしいのですが、
ブログパーツやメニューのみFlashにしている場合は誤動作の原因になる場合もあります。

今日まさにそれでハマっていたので対処法をメモっておきます。

ドキュメントクラス「Index.as」内の下記の箇所を書き換えれば
無効にすることができます。

protected override function atReady():void {
//	manager.sync = true;
	manager.sync = false;

//	manager.goto( manager.syncedSceneId );
	manager.goto( new SceneId('/index') );
}

manager.syncというプロパティが関係するらしいので「false」にします。

manager.syncedSceneIdもURLアンカーによる場所が格納されているぽいので、
移動先も強制的に「/index」にしてしまいます。

もっとエレガントな方法もありそうですが、とりあえずこれで対処できました。

リトルアンカー(限定版) リトルアンカー(限定版)

D3PUBLISHER 2009-04-23
売り上げランキング : 7802
おすすめ平均

Amazonで詳しく見る by G-Tools

Progression4で外部ファイルの使い回しを簡単に
Posted 2010年2月13日 | Auther ダダ | Category PC・デジタル | Tag タグ: , ,

Progression4から搭載されたResource関連がとても便利なのでメモ。

これまでも外部ファイル(swf、画像、mp3など)を読み込んで使い回す
ということは出来ましたが、それなりに手間がかかりました。

Progression4からはそれらを管理するResource系のクラスが登場し、
かなりシンプルになったようです。

michinoko blogさんで書かれていたことを参考に書いてみました。

続きを読む

Progression:カスタムコマンドを使おう(2)
Posted 2010年2月3日 | Auther ダダ | Category PC・デジタル | Tag タグ: , ,

今回は簡単なカスタムコマンドを作ってみます。

続きを読む

Flashのキャッシュ対策。FlashVarsを使う
Posted 2010年1月28日 | Auther ダダ | Category PC・デジタル | Tag タグ: ,

Flashを使ったページを作っていると
「swfを更新したのにキャッシュから読み込まれてしまう」なんてのはよくある話です。

対応は簡単で、ファイルが新しいものだとブラウザに教えてあげればいいのです。

var flashvars = {};
var params = {
	wmode: "transparent" // このへんは各自にあわせて
};
var attributes = {};
swfobject.embedSWF(
	"menu.swf?20100128_001",
	"flashcontent",
	"700", "100", "9.0.45",
	"expressInstall.swf",
	flashvars, params, attributes);

これは SWFObject2を使った場合の書き方ですが、他の書き方でも同様に
「ホニャララ.swf?適当な文字」としてあげればよいのです。

ではプリローダーを使っている場合はどうなるか。
グローバル変数的な使い方についてもちょっと書きます。
続きを読む

Y座標で重ね順を入れ替える
Posted 2010年1月20日 | Auther ダダ | Category PC・デジタル | Tag タグ: ,

ActionScript3の重ね順は setChildIndex()のおかげでだいぶラクになりましたね。

ゲームとかいろんなとこで必要になる、Y座標による重ね順の変更です。
だいぶ以前 mixiに書いてたのを掘り起こしてリプレースしました。

続きを読む