ホーム > tech

例えば10枚のイメージがあって、それを10個のオブジェクトにばらばらに貼っつけたい場合、(リロード/タイマーがかかる度にオブジェクトのイメージをシャッフルさせたいということ)どうすればいいのかね?という問題。

フツーに0~10からランダムに整数を取得して、それを10回繰り返すと同じイメージが2つ以上現れてしまう可能性が大です。絶対にイメージがかぶらないようにするにはどーすればよいのか?という問題。

どう検索すればよいのかわからずごにょごにょしましたが、「配列をランダムに生成する」、「Fisher-Yates」という方法があることを知りました。

スクリプトはこんな感じ。ここでは仮に配列の数を10コにしています。

var list:Array=[0,1,2,3,4,5,6,7,8,9]; 

var i:int=list.length;
while(i--){
var j:int=Math.floor(Math.random()*i);
var t:Number = list[i];
list[i] = list[j];
list[j] = t;

}



かなり行数が少ないキレイなスクリプトですが、何をやってるのかイマイチわからず。
list[i]の値、list[j]の値、iの値、jの値、listをトレースするとこんなかんじになりました。

i=9
j=8
list[i]=8
list[j]=9
list=0,1,2,3,4,5,6,7,9,8
i=8
j=3
list[i]=3
list[j]=9
list=0,1,2,9,4,5,6,7,3,8
i=7
j=5
list[i]=5
list[j]=7
list=0,1,2,9,4,7,6,5,3,8
i=6
j=0
list[i]=0
list[j]=6
list=6,1,2,9,4,7,0,5,3,8
i=5
j=1
list[i]=1
list[j]=7
list=6,7,2,9,4,1,0,5,3,8
i=4
j=0
list[i]=6
list[j]=4
list=4,7,2,9,6,1,0,5,3,8
i=3
j=0
list[i]=4
list[j]=9
list=9,7,2,4,6,1,0,5,3,8
i=2
j=1
list[i]=7
list[j]=2
list=9,2,7,4,6,1,0,5,3,8
i=1
j=0
list[i]=9
list[j]=2
list=2,9,7,4,6,1,0,5,3,8
i=0
j=0
list[i]=2
list[j]=2
list=2,9,7,4,6,1,0,5,3,8


おおー。処理をする度に数字が入れ替わっているのがわかります。
つまり、

while(i--){ //配列の長さ(この場合は10)から(ゼロになるまで)1を引く。
var j:int=Math.floor(Math.random()*i); //「j」は0~(i-1)までの数字のどれか
var t:Number = list[i]; //「t」は配列のi番目の数字
list[i] = list[j]; //リストのi番目にj番目の数字を代入
list[j] = t; //リストのj番目にt(=i)を代入

}

という処理を繰り返しているのですね。

いろいろ詳しく載っているページも沢山ありますが、イマイチ原理が理解できなかったのでメモメモしました。



2010年2月 8日 11:17 | コメント(0) | トラックバック(0)|


流れゆくTwitterのつぶやきを眺めるためのブログパーツ、Tweet watcherを作りました。
下のウィンドウにツイッターIDを記入して、ボタンをクリックでコードがコピーされます。


あとは好きなところに⌘Vでペースト。で、



こんなふうに表示されます。

my tweet(入力したIDの人のつぶやき)、everyone's tweet(すべてのユーザーのつぶやき)、search(単語検索)の3つのモードに切り替えられます。
searchはアルファベット以外でやるとエラーになってしまいますのでご注意ください。
実装にあったては、swfjunkieさんのtweetrというライブラリを使わせていただきました。

いろんな言語で表示されるeveryone's tweetをぼんやり眺めたり、"avatar"とかで検索かけてみたりするとなかなか楽しいです。ユーザー名をクリックすると、その人のツイッターページに飛べます。

みなさんぺたぺたあちこちに貼ってください。
ご意見・ご感想お待ちしてまっす。


2010年2月 1日 12:09 | コメント(0) | トラックバック(0)|


結構ハマッたのでメモメモ。

何がしたかったかというと、ダイナミックテキストフィールドに読み込んだ文字をちょいおされなフォントで表示したかったのです。

手順
1.ライブラリ→新しいフォントで、フォントを登録。私はBarnhard Modernのボールドを「Bernhard」という名前で登録しました。

2.asでこんなかんじのことを書いてみる。

//BernhardをとりあえずmyFontと呼ぶ。
var myFont: Bernhard = new Bernhard();
//CSSでスタイルをいろいろ指定。 フォントの種類は上で命名したmyFont。
myStyleSheet.parseCSS(".fontclass {color: #FF0000; fontFamily:myFont, fontSize: 30pt;letterSpacing: 0; marginLeft: 0;}");

//ダイナミックテキスト用のテキストフィールド"txtField" を用意。
txtField = new TextField();
txtField.styleSheet =  myStyleSheet;
txtField.width = 150;
txtField.height = 150;
txtField.wordWrap = true;
txtField.htmlText = txtField.htmlText = "<p class=\"fontclass\">"+"rolem ipsum"+"</p>" 

addChild(txtField);

・・・・・
コレで書き出すとうまくいきません。
なぜか。
どうやら、Flashには登録したフォントに勝手に名前をつける、という迷惑な機能があり、その名前で呼び出す必要があるようなのです。

そこで、

trace(myFont.name);

を実行すると "Bernhard Modern BT" というのがトレースされます。これがFlashの命名ですね。コチラをmyFontと差し替えます。ちなみにmyFont.nameと直接書いても効きません。

あと、
txtField.embedFonts = true; 
は必要ありません。ていうかこのコードを書くと、うまく表示されなくなります。

なんかちょっと面倒くさいですね。



・・・・・
追記。

フォントサイズの指定がうまくいきません。なにをやっても8ptになってしまう。色はかえられるのだけれど。BoldとかItalicの指定がうまくいかないと書いている人がいたので、エラーの一種かもしれません。
こまったもんだ。
どなたか知っている人がいらしたら、ご教示願いたいです。

・・・・・
もっかい追記。

myStyleSheet.parseCSS(".fontclass {color: #000000; font-family:Bernhard Modern BT; font-size: 30pt; letterSpacing: 0; marginLeft: 0;}");

この書き方でうまくいきました。お騒がせしました。

・・・・・
更に追記。

やはりembedFontはtrueにしないと他の人のパソコンで見れないということが判明、、。
embedしてみたものの、重くわなるし、文字の輪郭がぎざぎざに表示されるし、なぜか細身になるし、、、。デフォルトフォントが一番よいのではないかという、平凡且つ悲しい結論に落ち着きそうです。

2010年1月20日 17:08 | コメント(0) | トラックバック(0)|

twitterのブログパーツがうまくはれないのらー



と、おもったらちゃんと本家のやつがありました。デザインがださいのが玉に瑕。


2009年7月31日 11:00 | コメント(0) | トラックバック(0)|

トップのハチドリをクリックしていただくと、メインページにとびます。
メインもいろいろ工事中ですが、追々アップしていきます。

htmlにswfを表示できるようにするswfobject.jsがいつのまにやら新しくなっていたらしく。ちょっとてこずりました。

こちらのページを参考にさせていただきました。

今見たら、DL用のパッケージにちゃんと例がありましたですよ。めんどくさがってすっとばしたのがいけなかったのですね。

2009年7月 7日 16:28 | コメント(0) | トラックバック(0)|

AS3のれんしうで作りました。
というか、前に作ろうとして途中で挫折したのでした。

すぐ組めるかと思いきや、ポイントがいくつか。

・ファイルを開いた瞬間に、その時間までの線を描画する。
これは12時を0°としてsin・cosを使って線の終点を求めました。 

・針が12時のところに来たらすべての線を一旦消してまた一から出す。
この処理は、コチラを参考にしました。むう、removeChildにこんなウラワザが。


へなちょこスクリプトですが、flaファイルをコチラからDLできます。
タグは↓コチラ〜〜〜

<script language="javascript" src="http://yukikomurai.com/blogparts/line.js" type="text/javascript"></script>


2009年7月 3日 15:32 | コメント(0) | トラックバック(0)|


tweener.jpg
tweenerライブラリにはいっている動きの一覧。グラフで感覚的にわかります。
トウィーンモーションてflashでけっこうキモだとおもうのですが、これがあればだれでも「キモチいい動き」を作れますね。すごい。


2008年9月 4日 15:52 | コメント(0) | トラックバック(0)|


papervision.jpg
paper visionをそう略すのかはしりません。Action Scriptの3Dプラグインのサンプルです。
地球をぐるぐる動かしたり、都市の名前を書き込むとピンがたてられたりします。

2008年8月19日 16:09 | コメント(0) | トラックバック(0)|


houseofcards.jpg

RedioheadのPV、
トム・ヨークの頭部をぐるぐるまわして遊べて更にそれが曲とシンクするツール
更にソースコード。Processingで開発されているそうです。

すごいですね。
すごすぎてよくわからないけど、クリエイティブな資産を解放する方向によのなかは進んでるんですかね。

2008年7月16日 18:57 | コメント(0) | トラックバック(0)|