Home > flash Archive

flash Archive

1  2  3  4  5

文字列の検索について割とどうでもいいこと

  • Posted by: daniwell
  • 2010年5月18日 00:56
  • flash
var str :String = "テスト";
var i :uint = 0;

for (i = 0; i < 100000; i ++)
{
	str.search(/テスト/);
}

for (i = 0; i < 100000; i ++)
{
	str.indexOf("テスト");
}

単に任意の文字列が含まれているかどうかの検索だけなら、
無駄に正規表現使うよりもindexOfのほうが20~30倍くらい速い。

検索対象文字列 or 検索文字列を長くしてもおなじ。

正規表現は要はパターンマッチだから indexOf と比べて遅くいのは当然、といえばまあそうなのかも。

多重ループからの脱出

  • Posted by: daniwell
  • 2010年5月17日 23:59
  • flash

ラベル使うと2重、あるいは3重といった多重ループの中から簡単に抜け出すことができる。
ということをつい最近知った。

LABEL:
for (var i:int = 0; i < 3; i++)
{
	for (var j:int = 0; j < 3; j++)
	{
		if ((i == 1) && (j == 1)) break LABEL;
		trace(i,j);
	}
}

 
まあループって重ねても2つ、稀に3つのときもある、というくらいだから、
あんまり使いどころがなかったりするのだけれど。

papiness class library :: update

  • Posted by: daniwell
  • 2010年3月21日 00:09
  • flash

久々にクラスライブラリを更新した。

掃除と更新で今日一日が大方終わってしまったな。

空白文字を無視して単語を抽出

  • Posted by: daniwell
  • 2010年2月 9日 03:28
  • flash

正規表現の話。
下のサンプルはAS3だけど基本的には他の言語と大差ないかと。

改行や空白などが間に挟まった単語で、それらを全部マッチさせたい場合、
たとえば「りんご」という単語を例にとって見た場合、下記のように「り\s.ん\s.ご」という正規表現パターンで抽出することができます。

var str1 :String = "りんご";
var str2 :String = "り   ん      ご";
var str3 :String = "り\nん\n\n\n\n\nご";

var reg :RegExp = /り\s.ん\s.ご/;

trace( str1.match( reg ) );
trace( str2.match( reg ) );
trace( str3.match( reg ) );

"\s"は任意の空白文字(スペース・タブ・改行・復帰)を指します。

タイムライン上のサウンドをcomputeSpectrumで解析

  • Posted by: daniwell
  • 2010年1月24日 02:20
  • flash

SoundMixerのcomputeSpectrumって、
タイムライン上にストリーミングで配置してるサウンドも解析してくれるものだと思ってたら、
どうも解析されない。

一旦下記のようなスクリプトで、適当なmp3(空でよい)を読み込んで再生すると
タイムライン上のものもきちんと解析されるようになった。

var sound :Sound = new Sound();   
sound.load( new URLRequest("blank.mp3") );   
sound.play();

いやはや、謎仕様だ。

Papervision3D 両面にテクスチャとかエフェクト掛けれるようにするとか

日々いろんなことをやっていると、
いろんなことを忘れていくので、
こうしてメモとして記事に起こすとちょっとは忘れなくなる、かな。
(たとえ後で見返すことがなくとも)
 

plane.doubleSided = true;
// 両面にテクスチャを適用
plane.useOwnContainer = true;
// alphaとか(ブラーやグローなどの)エフェクトが使用可になる
// ただし、CLICK効かなくなるので、代わりにPRESSを使う

12 National Language Translator

  • Posted by: daniwell
  • 2009年9月13日 17:13
  • flash

Google AJAX Language APIを使って、12ヶ国語翻訳機を作ってみた。

対応言語:英語、日本語、中国語、韓国語、ドイツ語、フランス語、イタリア語、スペイン語、オランダ語、ポルトガル語、ロシア語、トルコ語

 
以下、翻訳用のクラス。

[class file: GoogleLanguage.as (AS3.0) ]
 

var gl :GoogleLanguage = new GoogleLanguage();
gl.addEventListener( GoogleLanguage.COMPLETE, glComplete );
gl.translate("こんにちは", "jp", "en");

function glComplete ( evt :Event ) :void
{
	trace( gl.result );
}

使い方はこんな感じ。
これで日本語→英語(例:"こんにちは"→"Hello")に翻訳されます。

EasingGenerator

  • Posted by: daniwell
  • 2009年9月13日 16:14
  • flash

AltSwitch - EasingGeneratorリリース

これはTweenerを思い通りに制御したいときに便利な感じがする。
mxp形式パッケージ。

みんないなくなってしまえばいいと思うよ。

  • Posted by: daniwell
  • 2009年8月27日 02:20
  • flash
function hide ( obj :DisplayObjectContainer ) :void
{
	while ( 0 < obj.numChildren )
	{
		var m :* = obj.getChildAt(0);
		
		if ( m is DisplayObjectContainer ) 
			hide( m );
			
		m.parent.removeChild( m );
		m = null;
	}
}

// rootでこれ呼ぶとステージ上からすべての表示オブジェクトが消滅する(参照も外れる)
hide( this );

ほんとうに消滅します。
(そしてありとあらゆる親子関係が無くなります)

 
ブラシツールや鉛筆ツールで適当に描いてみた絵も、
システマティックに並べてみたMovieClipやUIComponentも、
forループで数百数千個と生み出したSpriteも、

ぜんぶぜんぶ、消えてしまいます。

 
通称、みんな死んぢまえメソッド(今考えた)。

 
クラス化しておこうかと思ったけど、
ぶっちゃけそれほどのことはないし、そもそも使う機会がほとんどなさ気なので、
まあいいや。

"N as Boolean" is false

  • Posted by: daniwell
  • 2009年8月14日 02:51
  • flash
var n :int = 1;
trace( n as Boolean ); → false
var n :int = 1;
trace( Boolean ( n ) ); → true

as *** で型キャストしてばかりだと、
こんなところでつまずくから目も当てられにゃい。

1  2  3  4  5

Index of all entries

Home > flash Archive

Search
Feeds

Return to page top