シャッフル配列
■FLASH LABO:スクリプト
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 |
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というふうに使います。
trace($dateCounter("2008/11/15","2008/11/1")) //14
trace($dateCounter("2008/11/15")) //1.22332141203704
というふうに使います。大晦日に更新があるよ!正月にも更新があるし…。正月営業してる店舗とかのウェブ更新を担当していると、プライベートの日程がかなり限られてきてしまいますね。チラシ作ってるデザインスタジオも三が日にデータを届けますといってました…。忙しそう…(゚皿゚)
最近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>
前回の記事で参照画像が別ドメインだった場合のセキュリティー関係のスクリプトでの対処法を行ったときに、ドメイン名を投げてあげないといけないので、URLからドメインだけを抽出する処理を書かないといけなくなりました。ついでに使いまわせるよう、ファンクションをつくっときました。ドメインだけが返ってってくか、または、ドメインが見当たらなかったらfalseが返ってきます。
実行方法は以下のような感じ。
$uri2domain("http://www.yampuu.com/labo/img/071108sharefl.jpg")
//www.yampuu.com
$uri2domain("/labo/img/071108sharefl.jpg")
//false
別ファイルのJPGを読み込んで表示するフラッシュを作ったとして、フラッシュの置いてあるドメインと、読み込むJPGのドメインが、別々の場所だったとき、JPGは表示されません。それを解決するのがクロスドメインXML。フラッシュで別ドメインの画像を参照する際には、参照先のドメインの中にcrossdomain.xmlというファイルを置かないと読み込むことができないんですねー。
そこまではわかってたんですが…今日はクロスドメイン置いても動かないよー(゚回゚)という事態に陥りました。原因はcrossdomain.xmlを置いてもdraw()を使っているスクリプトが動作しない…というバグ。ばぐー(゚皿゚)。
ググってたらFlash Player9での実行ならOKな解決法があるようで、とりあえず解決。下のスクリプトを入れることで解決するそうです。
_domain = "www.********.jp"
System.security.loadPolicyFile(_domain+"/crossdomain.xml")
function $sum(a, b) { //とりあえず適当なファンクション
return a+b;
}
_root.$sum = $sum;
delete $sum;
このあいだ下階層ムービークリップで定義したファンクションを_rootで指定して使いたいときがありました。無理かと思ったんですが、やってみるもんすね。できました('u')上のスクリプトを_root以外のとこかに貼り付けて実行してデバッグしてみると、_rootにファンクションができるのがわかると思います。
ps = _root; //ムービークリップのリストを出したい階層
for (obj in ps) { //ムービークリップや配列や変数、あるだけループ
if (ps[obj]._visible) { //_visibleプロパティーが存在してたらたぶんムービークリップかな
trace(ps[obj]);
}
}
その階層にあるムービークリップを探し出してリスト化したいとき、これでやってみたらできちゃった!例では_rootに指定してます。もしかして当たり前なのかもしれないけど…昔はオブジェクト=ムービークリップって考えてたけど、デバッグを見ると、配列やファンクション関数、変数なんかもすべてひとつずつの存在として別々の仕事してるだけなのか(゚回゚)ちょっと考え方がやわらかくなった気がしました。
Selection.setFocus(テキストフィールドの名前)Selection機能を使ったら、ほかにも選択エリアのコピーとか色々できるっぽいです。
…thumbnailer2.swf?ph_uri=画像のURL&html_uri=リンク先…リンク先を省略するとリンクされないサムネイルになります。
…&html_uri=fullScreen…
//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単純にぼかしをスクリプトで扱った場合どうしたらいいかまとめ。
_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かな。
_str = "クリップボードにコピーされるテキスト" System.setClipboard(_str)変数の中身をヘルプを眺めてたら発見。最近YouTubeとかも個の機能付いてるしたまに使いどころがありそう。ブログシールのタグとか。作業のアプリケーションを作るときとか。
//引数の内容 $replacement( テキストA , テキストB , 検索テキスト ) //出力サンプル str = "気づけばもう木曜だ。だから週末だ。" trace( $replacement( "だ。" , "です。", _str ) ) //気づけばもう木曜です。だから週末です。 trace( $replacement( "だ" , "です", _str ) ) //気づけばもう木曜です。ですから週末です。htmlソースのように開始タグと閉じタグで挟んでいくようなテキストを吐き出す仕組みを作ろうと思ったときに、どんどん置き変えていく方法でもできそうって思ったのでやってみました。その過程でできたものがこれ。結構使いまくり('u')結構使いまくり。
_str = "\""常識かもしれませんが知りませんでした。これでいけるんだ(゚回゚)ォォォ-あ。ここだと文字コードがUTF8なので\(バックスラッシュ)の表示になってしまうけど半角の¥記号です。
//引数の内容 $StrInvolution( 連続させる文字 , 回数) //出力サンプル trace( $StrInvolution( "え", 3)) //えええ trace( "1"+$StrInvolution( "0", 5)) //100000 trace( "g"+$StrInvolution( "o", 10)+"gle") //gooooooooooglehtmlソースを書き出す仕組みを作ってみようとおもって、テキストをインデントしていく部分を\tでタブインデントを繰り返すことろをファンクション化しました。文字と回数を指定するだけでいいようにしといたファンクションです('u')
if(_sw == true){ /*処理*/ }
if(_sw){ /*処理*/ }
上下とも同じ処理なんですが。最近下を使うようになりました。んでundefinedとかnullとかfalseとかブルー演算では通らないものってどれとどれなんだろうともやもやするので検証アンドメモ。基本的に何か文字が代入されてたらtrueで、false、0、null、undefinedだと通らない様。これで安心して省略形使えるです('u')アンシンー
//バージョン判定
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までしかアップデートできないらしいのです…など困ったときに使えます。
//出力サンプル
trace( $fileTypeSearch("filename.jpg") )//jpg
ファイル名をまとめた配列なんかがあったとき、いっこいっこのファイルの拡張子を調べれるじゃん('回')オット!!とおいついたので簡単な処理ですけどアップしてみました。拡張子を調べて特定のものがけ別の処理をかけたいときの判断分岐なんかに使えます。//出力サンプル $num2Alphabet(0)//A $num2Alphabet(25)//Z番号テキスト付きのサムネイルを沢山生成して、そのあとで番号じゃなくてアルファベットで表記したかったな…(`A´)ウウウゥというときになどで使えます。ちなみにこれ、とりあえず25超えたらAに戻るようになってます。
//出力サンプル _out = $day_shortcupRestoration( "月") trace( _out )//月 _out = $day_shortcupRestoration( "火-木") trace( _out )//月・火・水・木 _out = $day_shortcupRestoration( "水-月") trace( _out )//水・木・金・土・日・月 _out = $day_shortcupRestoration( "毎日") trace( _out )//日・月・火・水・木・金・土番組表を作るとして…というか作ってるんですが。
//出力サンプル//ループ処理する場所に記述 trace( $randomUnMimic( 10 , _num) )たとえばランダムで画像を表示するスライドショーとか作ったときに、え?さっきとおなじ画像がでたよ?かぶってるよ(゚回゚)ガーンって連続で同じ画像が出る違和感がるものになてしまいますよね。そこで連続で同じ数字が出ないランダムってのを作ってみました。
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座標がわかっていて角度と半径を出したいときサイン(゚口゚)コサイン(゚回゚)タンジェント(゚皿゚)思い出してどうだったっけってしき作るのは結構時間ロスだ…とおもったのでファンクションにしてみました。//出力サンプル imp = [48,45,82,1,3] trace( $arrSum(imp) )//179エクセルのSUMみたいに配列の合計をだしたいなーって思ったときに毎回計算してたら行数増える(゚皿゚)ムーーっておもって…配列に数字ばっかり入ってる時限定ですが全部合計できちゃうファンクションを作りました。
//出力サンプル trace( $zeroAddNum(15,5) ) //00015 trace( $zeroAddNum( 54.467 , 4 ) ) //0054 trace( $zeroAddNum( 54.467 , 4 , 4) ) //0054.4670デザイン的にここ数字2桁ほしいよ(`回´)3桁ほしいよ(`皿´)って時に数字が1桁でも余った分左に000を付け加えてくれるファンクション作りました。桁揃えます。絶対同じ文字数にしたいときとかと使うと便利。
外部読み込みの処理付きのスクリプトを再生する時、.swfをじかに再生するとうまくいくのに、.exeにしてから再生したら読み込みまない現象が…。調べると…。
.swf再生の場合同階層のフォルダ内のものを読むときは
loadMovie("fileName.jpg")
.exe再生の場合同階層のフォルダ内のものを読むときは
loadMovie("/fileName.jpg")
の記述の違いがあるみたいです。
ウェブ上で/fileName.jpgだとドメインの最上階階層のファイルを探しちゃうので、.swfと.exeの場合で書き方変えないといけないということになります。ちょっと微妙。覚えとかないと…。めもめも。
| SUN | MON | TUE | WED | THU | FRI | SAT |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |