トップ | FLASH LABO |

シャッフル配列

■FLASH LABOスクリプト

たくさん並んでいるものを無作為にひとつずつ消していくことがやりたかったので、最大値を入れるとシャッフルされた配列が帰ってくるファンクションをつくってみました('u')
trace($shuffleRandom(10))	//8,1,7,4,0,9,6,3,5,2
trace($shuffleRandom(10))	//6,5,8,0,1,9,2,7,3,4
trace($shuffleRandom(3))	//1,2,0
というふうに使います。
入れる引数の項目と順番は以下の通りです。
$shuffleRandom(最大値)
定義するファンクションはこちら。

続き »

サムネイラー

■FLASH LABOスクリプト


4/25のウェブさわり会議でプチスピーカーをしました。テーマは汎用性SWF。サムネイルを作ってくれるSWF"サムネイラー"について発表させてもらいました。画像を決まった四角に余白がが出ないようにきれいにおさめ表示できるサムネイル生成swfです。SWFに引数を渡すことで、いそいそな案件に汎用的に使えます。
サムネイラーサンプル1
サムネイラーサンプル2
ダウンロード

まずは配置と画像・リンク先の書き方を説明します。

続き »

日程カウントダウン

スクリプト

なんだか今日からこの日まであと何日のスクリプトを何度か仕事で作ったので、ファンクションにまとめてみました('u')
trace($dateCounter("2008/11/15","2008/11/1"))		//14
trace($dateCounter("2008/11/15"))			//1.22332141203704
というふうに使います。
入れる引数の項目と順番は以下の通りです。
$dateCounter(遠い日程,近い日程)
または
$dateCounter(遠い日程)
ひとつだけ入れると、近い日程は自動的に現在時間になります。
定義するファンクションはこちら。

続き »

前回訪れた時間と比較

■FLASH LABOスクリプト

連続アクセス制限とか前回訪れてからどのくらい時間が経ったかなどがわかるスクリプトのサンプルを頼まれたので、のっけときます。自分でもなんかで使えそうです('u')

続き »

2工程キリバン判定

■FLASH LABOスクリプト

カウンターなどのキリバンの判定がめちゃ単純にできたのでメモメモ。どこかの桁ひとつを区切り文字として配列化して、配列数を数えたら判定できちゃうことに気づきました。便利('u')

続き »

ジャバスでタイマー更新

■FLASH LABOスクリプト

大晦日に更新があるよ!正月にも更新があるし…。正月営業してる店舗とかのウェブ更新を担当していると、プライベートの日程がかなり限られてきてしまいますね。チラシ作ってるデザインスタジオも三が日にデータを届けますといってました…。忙しそう…(゚皿゚)

最近JavaScriiptでフラッシュ配置のソースをDocument.writeするのは当たり前になりましたが、そのおなじみのDocument.writeにDateの判断をつければタイマーになるじゃん!やってみようということで、高味さんと研究!うまくいきました((('u')))+

日時を入力しておくと、その日時の前か後かで、書かれるソースが変わるジャバスクリプトです('u')


<script type="text/javascript">visibler('<div style="display:none">','','2008','1','1','0','0');</script>
<h2>タイマー更新したいソース</h2>
2008 1/1 00:00:00まではdisplay:noneで隠す<br />
2008 1/1 00:00:00からは隠さない<br />
<script type="text/javascript">visibler('</div>','','2008','1','1','0','0');</script>

というふうに使います。入れる引数の項目と順番は以下の通りです。
visibler ( まだ来てないときのソース , 過ぎていたときのソース , 年 , 月 , 日 , 時 , 分 )
定義するファンクションはこちら。

続き »

URLからドメインを抽出

■FLASH LABOスクリプト

前回の記事で参照画像が別ドメインだった場合のセキュリティー関係のスクリプトでの対処法を行ったときに、ドメイン名を投げてあげないといけないので、URLからドメインだけを抽出する処理を書かないといけなくなりました。ついでに使いまわせるよう、ファンクションをつくっときました。ドメインだけが返ってってくか、または、ドメインが見当たらなかったらfalseが返ってきます。

実行方法は以下のような感じ。


$uri2domain("http://www.yampuu.com/labo/img/071108sharefl.jpg")
//www.yampuu.com
$uri2domain("/labo/img/071108sharefl.jpg")
//false

ファンクション定義する中身は以下の通りです。

続き »

別ドメイン参照がバグる

■FLASH LABOスクリプト

別ファイルのJPGを読み込んで表示するフラッシュを作ったとして、フラッシュの置いてあるドメインと、読み込むJPGのドメインが、別々の場所だったとき、JPGは表示されません。それを解決するのがクロスドメインXML。フラッシュで別ドメインの画像を参照する際には、参照先のドメインの中にcrossdomain.xmlというファイルを置かないと読み込むことができないんですねー。

そこまではわかってたんですが…今日はクロスドメイン置いても動かないよー(゚回゚)という事態に陥りました。原因はcrossdomain.xmlを置いてもdraw()を使っているスクリプトが動作しない…というバグ。ばぐー(゚皿゚)。

ググってたらFlash Player9での実行ならOKな解決法があるようで、とりあえず解決。下のスクリプトを入れることで解決するそうです。


_domain = "www.********.jp"
System.security.loadPolicyFile(_domain+"/crossdomain.xml")

クロスドメインの作り方は以下の通り。

続き »

ファンクションを別の階層から定義

■FLASH LABOスクリプト

function $sum(a, b) {          //とりあえず適当なファンクション
	return a+b;
}
_root.$sum = $sum;
delete $sum;

このあいだ下階層ムービークリップで定義したファンクションを_rootで指定して使いたいときがありました。無理かと思ったんですが、やってみるもんすね。できました('u')上のスクリプトを_root以外のとこかに貼り付けて実行してデバッグしてみると、_rootにファンクションができるのがわかると思います。

スクリプトで 指定した階層全てのムービークリップを探す

■FLASH LABOスクリプト

ps = _root;				//ムービークリップのリストを出したい階層
for (obj in ps) {			//ムービークリップや配列や変数、あるだけループ	
	if (ps[obj]._visible) {		//_visibleプロパティーが存在してたらたぶんムービークリップかな
		trace(ps[obj]);
	}
}
その階層にあるムービークリップを探し出してリスト化したいとき、これでやってみたらできちゃった!例では_rootに指定してます。もしかして当たり前なのかもしれないけど…昔はオブジェクト=ムービークリップって考えてたけど、デバッグを見ると、配列やファンクション関数、変数なんかもすべてひとつずつの存在として別々の仕事してるだけなのか(゚回゚)ちょっと考え方がやわらかくなった気がしました。

石垣島いってきましたフォト:サムネ付きスライドショー

■FLASH LABO■LIFE STYLEスクリプト

社員旅行で石垣島へいってきました。ちょうどサムネイル付きスライドショーをつくってみたところだったので、ちょこっと撮った写真を使って、ブログツールとして使えるかどうか実験('u')フォトアルバム風にました。MTでJPGを参照アップしていくだけで自動フォトアルバムを生成できそう。
もうひとつ。スライドショーのエリア内にマウスを持っていくと下あたりにサムネイルが出てきます。マウス位置によって横にスクロールするようにしたので、サムネイルが多くなってはみだして選べなくなることはありません('u')
フルスクリーン機能もつけました。
スライドショーも色々いままでカスタマイズして今の形になってきました。
いままでは、ストリーミングっぽ感覚(処理に負荷がかかる場合、コマ跳びする)で再生していました。
今回は、時間がずれてもいいから1pxずつ移動するようにしています。そうすることでコマ跳びはなくなって滑らかにスライドするようになっています。でもフルスクリーンでみるとスライドが遅くなってしまっています…。縦長の写真とかかなり長く表示されちゃってます…うーんどうしよ。
スライドする方向については、3パターン。
写真とフラッシュサイズを比較してスライドする種類を横・縦・拡大・縮小の中から自動で判断して切り替えています。しかも、スライドする方向も交差するように自動で判断してます。写真とフラッシュサイズの比率が近いとき、スライドがあまりできないので、拡大縮小が始まるようにしています。

石垣島では1日目はいつものようにモノばかり撮ってたんですが。1日目の海岸の散歩中にもうバッテリー切れちゃって、しかも充電器忘れちゃったので、1日目の夕方以降の写真は撮れませんでした。ざんねん…。

テキストフィールド 入力状態に切り替え

■FLASH LABOスクリプト

はっけん!昔から気になっていた機能を発見。テキストフィールドについてです。普通、テキストフィールドをクリックしたらなるはずの、「テキストフィールドの中でカーソルが点滅する」状態をスクリプトで制御できることが判明!
Selection.setFocus(テキストフィールドの名前)
Selection機能を使ったら、ほかにも選択エリアのコピーとか色々できるっぽいです。

サムネイラー

■FLASH LABOスクリプト

アンチエイリアスをかけつつ指定のサイズを満たすようにトリミングするサムネイル機能のフラッシュ。ソースの記述で、swfの引数に画像のURLとリンク先を入力することで勝手にリサイズします。絶対その大きさに収めたいときに有効な手法。今回読み込み方法のスクリプトの見直しをしました。ついでにマウスオーバーでぼやけるようにしてみました。
…thumbnailer2.swf?ph_uri=画像のURL&html_uri=リンク先…
リンク先を省略するとリンクされないサムネイルになります。



前回のフルスクリーンのスクリプトも取り入れて見ました。

…&html_uri=fullScreen…


ブラウザから完全フルスクリーン

■FLASH LABOスクリプト

ブラウザから完全フルスクリーンってできるのだろうかと、きになっていたんですが、YOUTUBEとかフルスクリーンボタンがあるのに気づいて調査…。 FlashPlayer9からの機能でできるらしい。 Flash側の記述だけじゃなくて、HTML側にもタグかく必要があるみたい。 ボタンのスクリプト内でしか動作しないとか終了方法のアラートが出るとかちょこちょこ制限があって、背景を透明にしてみると動かなかった。これも制限かな。LightBoxっぽいのができるかなと思ったけど、無理でした。残念。

ぼかし

■FLASH LABOスクリプト

//load
import flash.filters.BlurFilter

//enterFrame
var _flt = new BlurFilter(10, 10, 2)//X,Y,Quarity
var _filArr = new Array()
_filArr.push(_flt)
this.filters = _filArr
単純にぼかしをスクリプトで扱った場合どうしたらいいかまとめ。
配列に入れるのが結構面倒…

平均角度

■FLASH LABOスクリプト

対処前
AとBの平均の角度がX。
360°の境目を超えると0°になってしまうので、瞬間的にXが反転してしまう。

対処後
AとBとの差が、180°を超えたときに反転。
こうすると、狭い角度の真ん中にいつもXが配置されるようになります。

2次元配列をjoin

■FLASH LABOスクリプト

_arr1 = []
_arr2 = ["a","b","c"]
for( i = 0 ; i < 3 ; i++ ){
	_arr1[i] = _arr2
}
trace( _arr1.join("_") )//a,b,c_a,b,c_a,b,c
2次元配列をindexOf()で一発で文字検索判定したかったので、join()してみたんです。どうなるんだろ。指定した区切り文字は全ての階層に反映するんだろうか?とおもって実験してみたけど、下階層はカンマになるみたい。区切り文字をカンマにしとけば、ずらりと長い区切り文字リストになるからまーOKかな。

メモ

■FLASH LABOスクリプト

BitmapData
きになるけどあとまわし
あとでべんきょうしようと


これのスムースも
MovieClip.attachBitmap()

クリップボードを自動コピー

■FLASH LABOスクリプト

_str = "クリップボードにコピーされるテキスト"
System.setClipboard(_str)
変数の中身をヘルプを眺めてたら発見。最近YouTubeとかも個の機能付いてるしたまに使いどころがありそう。ブログシールのタグとか。作業のアプリケーションを作るときとか。

置き換え機能

■FLASH LABOスクリプト

//引数の内容
$replacement( テキストA , テキストB , 検索テキスト )

//出力サンプル
str = "気づけばもう木曜だ。だから週末だ。"
trace( $replacement( "だ。" , "です。", _str ) ) 
//気づけばもう木曜です。だから週末です。
trace( $replacement( "だ" , "です", _str ) ) 
//気づけばもう木曜です。ですから週末です。
htmlソースのように開始タグと閉じタグで挟んでいくようなテキストを吐き出す仕組みを作ろうと思ったときに、どんどん置き変えていく方法でもできそうって思ったのでやってみました。その過程でできたものがこれ。結構使いまくり('u')結構使いまくり。
検索テキストの中から、テキストAをテキストBに置き換えます。

続き »

ダブルコーテーションを変数に代入したい

■FLASH LABOスクリプト

_str = "\""
常識かもしれませんが知りませんでした。これでいけるんだ(゚回゚)ォォォ-あ。ここだと文字コードがUTF8なので\(バックスラッシュ)の表示になってしまうけど半角の¥記号です。

文字を増殖させて並べる

■FLASH LABOスクリプト

//引数の内容
$StrInvolution( 連続させる文字 , 回数)

//出力サンプル
trace( $StrInvolution( "え", 3))		//えええ
trace( "1"+$StrInvolution( "0", 5))		//100000
trace( "g"+$StrInvolution( "o", 10)+"gle")	//goooooooooogle
htmlソースを書き出す仕組みを作ってみようとおもって、テキストをインデントしていく部分を\tでタブインデントを繰り返すことろをファンクション化しました。文字と回数を指定するだけでいいようにしといたファンクションです('u')

続き »

滑らかに回転をするときの0°と360°との繋ぎ

■FLASH LABOスクリプト

_rotationプロパティーでふんわりした動きで回転させたいとき、目標の値案まで割り算処理で近寄っていくとB Typeのような動きになってしまいます(゚皿゚)ガビーン
180から-180までの角度で回ってるらしく、-180と180の境をまたいだ瞬間逆回転してしまう…うーん…と、そこをどうにかならないかなといろいろ考えてみました。そこでうまく動いたのがA Typeです('u')

続き »

if文で通らない値の検証

■FLASH LABOスクリプト

if(_sw == true){ /*処理*/ }
if(_sw){ /*処理*/ }
上下とも同じ処理なんですが。最近下を使うようになりました。んでundefinedとかnullとかfalseとかブルー演算では通らないものってどれとどれなんだろうともやもやするので検証アンドメモ。基本的に何か文字が代入されてたらtrueで、false、0、null、undefinedだと通らない様。これで安心して省略形使えるです('u')アンシンー

続き »

OS判定バージョン判定

■FLASH LABOスクリプト

//バージョン判定
var _vStr = getVersion()
var _vStrArr = _vStr.split(" ")
var _vArr = _vStrArr[1].split(",")
_version = Number(_vArr[0])
delete _vStr
delete _vStrArr
delete _vArr

//OS判定
var _osStr = System.capabilities.os
var _osArr = _osStr.split(" ")
_os = _osArr[0]
_osv = _osArr[1]
delete _osStr
delete _osArr



//出力サンプル1
//バージョン判定
if(_version >= 7){
	trace("FlashPlayer7以上")
}

//OS判定
if(_os == "Windows"){
	if(_osv == "NT" || _osv == "98/ME" || _osv == "95" || _osv == "CE"){
		trace("WIN2000未満")
	}
}

//出力サンプル2
//OS判定
trace(_os)//Windows //Linux //MacOS
trace(_osv)//XP //2000 //NT //98/ME //95 //CE
FlashPlayer8で制作してたサイトを納品した後…「WIN NTでどうしても見たいと他の部署から要望が出まして」といわれてしまいました(゚回゚)マジスカ… WIN NTはFlashPlayer7までしかアップデートできないらしいのです…など困ったときに使えます。

テキストデータから拡張子を抽出

■FLASH LABOスクリプト

//出力サンプル
trace( $fileTypeSearch("filename.jpg") )//jpg
ファイル名をまとめた配列なんかがあったとき、いっこいっこのファイルの拡張子を調べれるじゃん('回')オット!!とおいついたので簡単な処理ですけどアップしてみました。拡張子を調べて特定のものがけ別の処理をかけたいときの判断分岐なんかに使えます。

続き »

数字をアルファベットに変換

■FLASH LABOスクリプト

//出力サンプル
$num2Alphabet(0)//A
$num2Alphabet(25)//Z
番号テキスト付きのサムネイルを沢山生成して、そのあとで番号じゃなくてアルファベットで表記したかったな…(`A´)ウウウゥというときになどで使えます。ちなみにこれ、とりあえず25超えたらAに戻るようになってます。

続き »

月-金 を 月・火・水・木・金 に変換する

■FLASH LABOスクリプト

//出力サンプル
_out = $day_shortcupRestoration( "月") 
trace( _out )//月
_out = $day_shortcupRestoration( "火-木") 
trace( _out )//月・火・水・木
_out = $day_shortcupRestoration( "水-月") 
trace( _out )//水・木・金・土・日・月
_out = $day_shortcupRestoration( "毎日") 
trace( _out )//日・月・火・水・木・金・土
番組表を作るとして…というか作ってるんですが。
月曜から金曜までやってる番組の表記を"月-金"にしてそのままテキストを表示するものを作っています。でもって、今日の曜日だけを判断して番組を表示する仕組みを作ってる途中で…"月-金"ってはいってたら火水木曜日が判断できない(゚回゚)ガーンってことになってしまったので"月-金"を"月・火・水・木・金"って返してくれるファンクションを作りました。
毎日っていれると"日・月・火・水・木・金・土"を返してくれます。

続き »

連続で同じ数字が出ないランダム

■FLASH LABOスクリプト

//出力サンプル//ループ処理する場所に記述
trace( $randomUnMimic( 10 , _num) )
たとえばランダムで画像を表示するスライドショーとか作ったときに、え?さっきとおなじ画像がでたよ?かぶってるよ(゚回゚)ガーンって連続で同じ画像が出る違和感がるものになてしまいますよね。そこで連続で同じ数字が出ないランダムってのを作ってみました。
変数= randomUnMimic( ランダムしたい最大数 , 変数)

続き »

trace( Number("020") )//16になるのはなんで?

■FLASH LABOスクリプト

天気予報データを分解して降水確率を抽出する案件があったんですが。
たとえば降水確率20%の場合、抽出した数字が"020"になるときや" 20"になるときがあって、Number()で囲うと直るだろうと思っていたらなんか降水確率が16%になってしまっていて
(゚回゚)ガーンナンデー
そんな数字は元データに入ってないのになーとおもって試行錯誤してました。

続き »

半径角度と座標の三角関数変換

■FLASH LABOスクリプト

trace("角度に変換 出力サンプル")
trace( $xy_r(100 ,100) )//45	
trace("半径に変換 出力サンプル")
trace( $xy_d(100 ,100) )//141.42135623731
trace("座標に変換 出力サンプル")
trace( $rd_x(60,2) )//100
trace( $rd_y(60,2) )//173.205080756888=√3
角度がと半径がわかっていてXY座標に変換したいときやXY座標がわかっていて角度と半径を出したいときサイン(゚口゚)コサイン(゚回゚)タンジェント(゚皿゚)思い出してどうだったっけってしき作るのは結構時間ロスだ…とおもったのでファンクションにしてみました。

座標に変換の出力サンプルは 1:2:√3(横の長さ:縦の長さ:斜めの長さ)になっている場合 60°になるはずなのでこんな入力の値にしてます。

続き »

配列内の値を合計する

■FLASH LABOスクリプト

//出力サンプル
imp = [48,45,82,1,3]
trace( $arrSum(imp) )//179
エクセルのSUMみたいに配列の合計をだしたいなーって思ったときに毎回計算してたら行数増える(゚皿゚)ムーーっておもって…配列に数字ばっかり入ってる時限定ですが全部合計できちゃうファンクションを作りました。
arrSum( 数字だけが入った配列 )

続き »

桁そろえファンクション

■FLASH LABOスクリプト

//出力サンプル
trace( $zeroAddNum(15,5) )			//00015
trace( $zeroAddNum( 54.467 , 4 ) )		//0054
trace( $zeroAddNum( 54.467 , 4 , 4) )	//0054.4670
デザイン的にここ数字2桁ほしいよ(`回´)3桁ほしいよ(`皿´)って時に数字が1桁でも余った分左に000を付け加えてくれるファンクション作りました。桁揃えます。絶対同じ文字数にしたいときとかと使うと便利。
zeroAddNum(数値 , 整数の桁数 ,小数点以下の桁数 )

続き »

FALSH FUNCTION ARCHIVE

■FLASH LABOスクリプト

フラッシュのファンクションを整理しよーと思いました。
ここでまとめてこうとおもいます。

Flash EXEファイルの外部読み込み

■FLASH LABOスクリプト

外部読み込みの処理付きのスクリプトを再生する時、.swfをじかに再生するとうまくいくのに、.exeにしてから再生したら読み込みまない現象が…。調べると…。

.swf再生の場合同階層のフォルダ内のものを読むときは

loadMovie("fileName.jpg")

.exe再生の場合同階層のフォルダ内のものを読むときは

loadMovie("/fileName.jpg")

の記述の違いがあるみたいです。
ウェブ上で/fileName.jpgだとドメインの最上階階層のファイルを探しちゃうので、.swfと.exeの場合で書き方変えないといけないということになります。ちょっと微妙。覚えとかないと…。めもめも。