Powered by Movable Type 3.16Syndicate this site(XML)
< February | | April >
2008.03.30

[URAWAChasing for Win

埼スタ 16:00キックオフ

浦和 3-0 新潟
【得点】相馬、トゥーリオ、永井

今日一番目を引いたのはトゥーリオのボランチでの起用。ある意味納得できたが、エンゲルスも賭けに出るな〜とは思った。結果、トゥーリオは中盤の競り合いで勝てるのでマイボールが増えたし、あとアイツはアレでなかなか視野が広くてパスセンスもあるので周りを本当に上手く使えるし、逆に周りの動き出しも良い。さらに得点までしちゃうんだから凄いよね。口が悪いけど、その分ちゃんと責任を果たすと言うか、水泳の北島みたいな感じで有言実行型なんだろうな。

新人の堤がスタメンでベテランの坪井がベンチだったことについては、エンゲルスは試合の分析をちゃんとしているし、個々の選手の調子も良く見ているな、と素直に評価できる。

エジと永井については何も文句ない。平と相馬の両サイドも良かったし、梅崎のアーリークロスには才能を感じる。啓太の早々の交代は心配だったけど、細貝もトゥーリオとの連携を気にしながらよくやったと思う。野人が出たのも嬉しかった(3点取った後からだけどね)。

今日の浦和は過去1、2を争うくらいに躍動感のあるプレーを見せてくれた。もちろん要所要所で個人技は光るが、それもチームプレーのうちの一つとして機能していた。エメタツのカウンターサッカーでもなく、ギド時代のイタリアを彷彿とさせるカテナチオサッカーでもなく、いわゆる現代的なパスサッカー。全員が攻め、全員が守る。あの暢久が献身的にチェイシングをしていたんだから、エンゲルスの力でチームが随分変わったな〜と思った。そう、得点者の影に隠れてしまってはいるが、今日の裏MVPは暢久と言っても良いくらいだった。先制点のアシストも評価できるけど、ヤマのチェイシングでかなり新潟は苦しんだと思う。

オジェックからエンゲルス体制になり、動きが良くなって、点も取れるようになって、引き分けられるようになって、今シーズン5試合目にしてやっと勝った。やっとWe are Diamondsを歌えた。この調子をキープできれば本当に新生浦和レッズになれる気がする。そんな期待でワクワクしている。

Posted by inami at 11:07 PM
2008.03.27

[SCRIPTACTION : Make Under-Buttons Disable

ボタンが並んでいる上にサブウィンドウ風のやつが出るようにしたら、下にあったボタンたちがイキで押せちゃって困った。

そんな時は、サブウィンドウの矩形と同じサイズのダミーの透明ボタンをサブウィンドウの下に敷いて

//指カーソルにならないようにする
dummyBtn.useHandCursor = false;

にすれば下に並んだボタンは反応しないし、ダミーの透明ボタンで指カーソルになることもない。前まではいちいち下のボタンのイベントを削除(deleteあるいは_visible=false)していたんですが、これだったら楽チンですな。

Posted by inami at 12:57 PM

[CREATIONFLASH : PaperVision3D

http://www.papervision3d.org/

AS3.0で動く3Dエンジンで
既に去年から流行ってるらしいが
おでは今日まで知らんかった。

そのほか、参考は以下
http://gigazine.net/index.php?/news/comments/20070212_papervision3d/
http://www.adamrocker.com/blog/124/flash_actinscript_papervision3d_download_install.html
http://f-site.org/articles/2007/05/07162426.html
http://f-site.org/articles/2007/06/04123001.html
http://d.hatena.ne.jp/flashrod/20070519
http://flash3d.seesaa.net/article/45153813.html
http://blog.r3c7.net/
http://blog.papervision3d.org/category/demos/

Posted by inami at 12:39 PM
2008.03.26

[SCRIPTACTION : Max Letters

FLASHのテキストエリアの入力可能文字数を制限するには

テキストエリアのインスタンスをクリック→プロパティパネルの中央下の「最大文字数」で文字数を設定する

これだけ。便利~。

Posted by inami at 11:45 AM
2008.03.25

[SCRIPTACTION : FocusRect Off

フォームやボタンで
タブを押すと色つきの枠が出てしまうときは

mc._focusrect = false
フォーカス枠の表示をオフにする

mc._focusrect = true
フォーカス枠の表示をオンにする

でよろしく。

Posted by inami at 11:23 PM

[SCRIPTACTION : Event Class

コンポーネントイベントの処理 > イベントオブジェクトについて

●イベントオブジェクトについて
イベントオブジェクトは、ActionScript Object クラスのインスタンスです。
イベントに関する情報を含んだ次のプロパティがあります。

type
イベントの名前を示すストリングです。

target
イベントをブロードキャストしたコンポーネントインスタンスへの参照です。

この他のプロパティについては、「コンポーネント辞書」の各イベントのセクションに一覧されています。

イベントオブジェクトは、イベントがトリガされると自動的に生成され、リスナーオブジェクトのコールバック関数またはリスナー関数に渡されます。

関数内でイベントオブジェクトを使用すると、ブロードキャストされたイベントの名前や、イベントをブロードキャストしたコンポーネントのインスタンス名にアクセスできます。インスタンス名から、他のコンポーネントプロパティにアクセスすることもできます。

たとえば、次のコードでは evtObj イベントオブジェクトの target プロパティを使用して、myButton インスタンスの label プロパティにアクセスし、値を [出力] パネルに送ります。

var myButton:mx.controls.Button;
var listener:Object;

listener = new Object();

listener.click = function(evtObj){
trace("The " + evtObj.target.label + " button was clicked");
}
myButton.addEventListener("click", listener);

【後記】
targetっていうのはつまりリスナーを設定するインスタンス(myButton)のことなんだろうと思われる。

Posted by inami at 02:33 PM
2008.03.24

[SCRIPTACTION : Sound

サウンドクラスです。

多謝
http://oshige.com/flash/note/archives/2005/05/sound.html

メソッド 説明


Sound.attachSound()
リンケージされたサウンドをSoundオブジェクトに割り当る。

Sound.getBytesLoaded()
ロードされたサウンドのバイト数を返す。

Sound.getBytesTotal()
サウンドのサイズをバイト単位で返す。

Sound.getPan()
setPan()メソッドで設定された値を返す。

Sound.getTransform()
setTransform()メソッドで設定された値を返す。

Sound.getVolume()
setVolume()メソッドで設定された値を返す。

Sound.loadSound()
MP3ファイルをFlash Player内にロードする。

Sound.setPan()
サウンドの左右のバランスを設定する。

Sound.setTransform()
各スピーカーで再生する左右各チャンネルの値を設定する。

Sound.setVolume()
サウンドにボリュームレベルを設定する。

Sound.start()
サウンドの再生を開始する。

Sound.stop()
サウンドを停止する。


プロパティ 説明


Sound.duration
サウンドの継続時間を示すミリ秒数。

Sound.id3
MP3ファイルのメタデータにアクセスする。

Sound.position
現在再生しているサウンドの位置(ミリ秒数)。


イベントハンドラ 説明


Sound.onID3
MP3ファイルの新しいID3データが利用できるようになるたびに呼び出される。

Sound.onLoad
サウンドがロードされたとき。

Sound.onSoundComplete
サウンドの再生が完了したとき。


Posted by inami at 03:32 PM

[URAWAA little light

ナビスコカップ予選2回戦
京都 3-3 浦和
※アウェイのため恵比寿のスポーツBARにて観戦。

やっと...やっと...やっと浦和にゴールが生まれたで。エジミウソンと梅崎と永井...がんばったな〜。エジ、ハットトリックだもんな。最初の点が決まった時は、嬉しくて嬉しくてちょっと目が潤んだよ。

勝てなかったのはトホホだけど、一つ卦が落ちたので、まぁ...良しとしよか。次の課題はDFかな...ほんとお粗末だったから。あ、堤じゃないよ、坪と掘だよ。

一歩一歩登って行きましょうか。頑張れ俺達の浦和レッズ!

Posted by inami at 12:04 AM
2008.03.22

[URAWALowest Level

3試合3敗無得点。監督交代。ゴール裏のフロントに対する抗議。確実に底辺にいる。ここ数年の浦和では、見たことがない程の悪い状況にいる。

だけど、こういう時こそが人の底力...その人その人本来の強さの見せ時なんだと思う。そしてこういう事の1つ1つが、日本で最も愛されているこのちょっと変わったチームの歴史となって、何年も語り種になっていくんだと思う。とても素敵なことだ。

先日のエンゲルスのサッカーはオジェックの去年一年のサッカーのどの試合と比べても一番面白いと思う。負けたけど、いつもより強い光が見えた。ゴール裏の抗議については最初は「なんで?」って思ったけど、あればまさしく「浦和愛」だ。

2008年という年は、個人的にも変化が既に色々ある年で、いつもより心労は多そうだけれど、底力の見せ時だと思って、期待と不安でドキドキしている。変化や挑戦という言葉がぴったり合う。

3ヶ月後・半年後・1年後・3年後の浦和が、また自分がどうなっているか、実に興味深い。

Posted by inami at 04:53 PM
2008.03.19

[SCRIPTACTION : FLVPlayback

FLV再生に関するエトセトラ。

尚FLVPlaybackクラスは
VideoPlayerクラスの上位ですから、そこんとこよろしく。

/*----------初期設定----------*/

import mx.video.*;

//外部FLVを読み込む
flv_player.contentPath = xxxMovie.xxxPass;

//ボリュームバーのコンポーネントをリンケージする
flv_player.volumeBar = volume_mc;


/*----------FLVPlaybackイベント設定----------*/

//FLVPlaybackリスナー用オブジェクトの作成
flv_listener = new Object();

//再生準備ができた時
flv_listener.ready = function()
{
//trace("ready");
//----ボタンをクリック可能に
play_btn_mc.thisBtnAble();//画面中央のPlayボタン
mute_btn_mc.thisBtnAble();//ミュートボタン
}

//再生状態に移行した時
flv_listener.playing = function()
{
//trace("playing");
//----表示変更
play_btn_mc.thisBtnDisable();//プレイボタン-非表示
}

//先頭に巻き戻した時
flv_listener.rewind = function()
{
//trace("rewind");
//----表示変更
play_btn_mc.thisBtnAble();//プレイボタン-表示
}

//リスナーオブジェクトを登録
flv_player.addEventListener( "ready" , flv_listener );
flv_player.addEventListener( "playing" , flv_listener );
flv_player.addEventListener( "rewind" , flv_listener );


設定できるプロパティは下記の通りでよろしく。


VideoPlayer.autoRewind
ブール値。true の場合は、再生が停止したときに、FLV ファイルを最初のフレームまで巻き戻します。

VideoPlayer.autoSize
ブール値。true の場合は、ビデオのサイズがソースのサイズに自動的に設定されます。

VideoPlayer.bufferTime
ビデオストリームの再生を開始するまでにメモリにバッファする時間を秒単位で指定する数値。

VideoPlayer.bytesLoaded
HTTP ダウンロードの進捗状況のバイト数を指定する数値。 読み取り専用。

VideoPlayer.bytesTotal
HTTP ダウンロードでダウンロードされた総バイト数を指定する数値。 読み取り専用。

VideoPlayer.connected
ブール値。FLV ファイルストリームが接続されているかどうかを示します。 読み取り専用。

VideoPlayer.height
ビデオの高さをピクセル単位で指定する数値。

VideoPlayer.idleTimeout
(再生が一時停止中または停止されているために発生する) アイドル状態である FCS 接続を終了するまでのミリ秒単位の時間。

VideoPlayer.isLive
ブール値。ビデオストリームがライブである場合に true になります。 HTTP ダウンロードには適用されません。

VideoPlayer.isRTMP
ブール値。FLV ファイルが FCS からのストリーミングの場合に true になります。 読み取り専用。

VideoPlayer.maintainAspectRatio
ブール値。true の場合は、ビデオの縦横比が維持されます。

VideoPlayer.metadata
onMetaData() コールバック関数の呼び出しで返されるメタデータ情報パケットであるオブジェクト。 読み取り専用。

VideoPlayer.ncMgr
INCManager を実装するクラスのインスタンスにアクセスするための INCManager オブジェクト。

VideoPlayer.playheadTime
現在の再生ヘッドの時間または位置を秒単位で示す数値。小数である場合があります。

VideoPlayer.playheadUpdateInterval
各 playheadUpdate イベント間の時間をミリ秒単位で示す数値。

VideoPlayer.progressInterval
progress イベントの発生する間隔をミリ秒単位で示す数値。

VideoPlayer.scaleX
水平方向の拡大/縮小率を指定する数値。

VideoPlayer.scaleY
垂直方向の拡大/縮小率を指定する数値。

VideoPlayer.state
コンポーネントの状態を指定するストリング。 load()、play()、stop()、pause() および seek() の各メソッドを使用して設定します。 読み取り専用。

VideoPlayer.stateResponsive
ブール値。現在の状態でコントロールを有効にできる状態 (応答状態) である場合に true になります。 読み取り専用。

VideoPlayer.totalTime
ビデオ再生時間の合計を表す数値。

VideoPlayer.transform
詳細なサウンド制御を提供するための Sound.setTransform() メソッドと Sound.getTransform() メソッドに直接アクセスするためのオブジェクト。

VideoPlayer.url
ロードした (またはロード中の) ストリームの URL を指定するストリング。

VideoPlayer.videoHeight
FLV ファイルの高さを指定する数値。

VideoPlayer.videoWidth
FLV ファイルの幅を指定する数値。

VideoPlayer.visible
ブール値。true の場合は、FLV ファイルを可視にします。

VideoPlayer.volume
ボリュームコントロール設定値を示す 0 ~ 100 の間の数値。

VideoPlayer.width
更新前にユーザーがボリュームバーハンドルを移動できる距離を指定する数値 (パーセンテージ)。

VideoPlayer.x
ビデオプレーヤーの水平方向のサイズをピクセル単位で指定する数値。

VideoPlayer.y
ビデオプレーヤーの垂直方向のサイズをピクセル単位で指定する数値。


イベントごとに色々設定できるので、そこんとこもよろしく。


VideoPlayer.close
タイムアウトまたは close() メソッドの呼び出しによりビデオストリームが閉じたときに送出されます。

VideoPlayer.complete
FLV ファイルの最後まで再生が完了したときに送出されます。

VideoPlayer.cuePoint
キューポイントに到達したときに送出されます。

VideoPlayer.metadataReceived
FLV ファイルメタデータに初めて到達したときに送出されます。

VideoPlayer.playheadUpdate
FLV ファイル再生中に 0.25 秒ごとに送出されます。

VideoPlayer.progress
load() メソッドを呼び出してから、すべてのバイトがロードされるまでの間またはネットワークエラーが発生するまでの間、0.25 秒ごとに送出されます。

VideoPlayer.ready
FLV ファイルがロードされ表示準備ができたときに送出されます。

VideoPlayer.resize
ビデオのサイズが変更されたときに送出されます。

VideoPlayer.rewind
seek() メソッドの呼び出しまたは自動巻き戻し操作の完了により、再生ヘッドの位置が後方に移動したときに送出されます。

VideoPlayer.stateChange
再生状態が変更されたときに送出されます。

Posted by inami at 12:05 PM
2008.03.17

[SCRIPTACTION : Setting random Colors

配列に入れた色をランダムに適用しようとしたら
setRGBが上手く動かなかったので、原因を調べてたら
配列に入れた16進数が10進数になってしまうことに気づいた。
だからセットするときにまた16進数に戻してやらなあかん。面倒くせっ。

ちなみに配列に入れなければ、0x------のままでも大丈夫なんだよな。
というか配列に入れた時点で、オブジェクトのタイプが違うってことなのかな?
toStringで数に戻してるのかな?

function setMyColors(){
	//色相を選ぶ
	//1:赤、2:青、3:黄、4:緑
	var colorRange:Number = Math.floor(Math.random()*4);
	
	//色の各配列(パネル7以外)
	if(colorRange == 1){//赤
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}else if(colorRange == 2){//青
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}else if(colorRange == 3){//黄
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}else if(colorRange == 4){//緑
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}
	

//色をセットする(パネル7以外)
var colorsNum:Number = colorAry.length;
//
for(var i:Number=0; i<=colorsNum; i++){
//色を配置
this["panelC"+i].setColorName = colorAry.splice((Math.random()*colorAry.length),1);
//色オブジェクト設定
this["panelC"+i].colorObj = new Color(this["panelC"+i]);
this["panelC"+i].colorObj.setRGB(this["panelC"+i].setColorName.toString(16));
/*
//this["panelC"+i]._alpha = 0;
*/
}


//パネル7の色をセットする
if(colorRange == 1){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0xFF0000);
//panelC7._alpha = 0;
}else if(colorRange == 2){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0x0000FF);
//panelC7._alpha = 0;
}else if(colorRange == 3){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0xFFCC00);
//panelC7._alpha = 0;
}else if(colorRange == 4){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0x00FF00);
//panelC7._alpha = 0;
}

}

setMyColors();

Posted by inami at 02:34 PM
2008.03.16

[URAWASoccer is very Life.

2008シーズン開幕2試合2連敗。オジェックが解任されエンゲルスが昇格し監督になった。

●2007シーズンのホルガー・オジェック(元)監督の成績
・Jリーグ2位
・ACL無敗制覇
・CWC3位

正直そこら辺の監督に出来る業ではない。
だた、タイトルよりも、もっと大事なことがある、そういうことなのだと個人的には思う。
勝負には勝ち負け引き分けがある、人生にもそういう時が巡ってくる。
サッカーはまこと人生だ。

Posted by inami at 11:46 PM
2008.03.14

[SCRIPTACTION : Math

今度はMath

Math.abs() 絶対値を計算する。
Math.acos() アークコサインを計算する。
Math.asin() アークサインを計算する。
Math.atan() アークタンジェントを計算する。
Math.atan2() x 軸から点までの角度を計算する。
Math.ceil() 整数に切り上げる。
Math.cos() コサインを計算する。
Math.exp() 指数値を計算する。
Math.floor() 整数に切り捨てる。
Math.log() 自然対数を計算する。
Math.max() 2つの整数を比べ、大きい方を返す。
Math.min() 2つの整数を比較し、小さい方を返す。
Math.pow() xのy乗を計算する。
Math.random() 0.0~1.0の疑似乱数を返す。
Math.round() 整数に四捨五入する。
Math.sin() サインを計算する。
Math.sqrt() 平方根を計算する。
Math.tan() タンジェントを計算する。

プロパティ(定数) 説明
Math.E 自然対数の基数。
Math.LN2 2の自然対数。
Math.LOG2E eの基数。2の対数。
Math.LN2 10の自然対数。
Math.LOG10E eの基数。10の対数。
Math.PI 円周率。
Math.SQRT1_2 1/2の平方根の逆数。
Math.SQRT2 2の平方根。

Posted by inami at 07:10 PM
2008.03.12

[SCRIPTACTION : setInterval

今度はインターバルをまとめる。
引用ばかり、多謝。

--------------------

●一定時間刻みで繰り返す

setInterval()関数を使えばonEnterFrameイベントハンドラを使わずに繰り返しの処理を行うことができ、また、時計の秒針移動のように正確なタイミングで動きを制御したい場合やフレームレートとはまったく違うタイミングの繰り返し処理を行うこともできます。
たとえば次のステートメントを実行すると、myObjオブジェクトのmyMethod()メソッドを2秒間隔で呼び出すようになります。
intervalIDにはこのインターバルの設定をキャンセルするためのidが入ります。

intervalID = setInterval(myObj, "myMethod", 2000);

myMethod()メソッドの実行の際にパラメータを渡すこともできます。パラメータがv1, v2ならば次のように書きます。

intervalID = setInterval(myObj, "myMethod", 2000, v1, v2);

インターバルをキャンセルするには、clearInterval(intervalID)を実行します。intervalIDは、setInterval()を実行したときに戻ってくる値です。

clearInterval(intervalID);

例:
メインのタイムラインにmyMCインスタンスを作り、フレーム1に次のフレームアクションを書き込みます。このムービーをパブリッシュすると、myMCインスタンスのkaitenメソッドが2秒間隔で呼び出されるようになり、結果として2秒間隔で時を刻むように10度ずつ回転します。

フレームアクション:
//実行するイベントハンドラを設定する
myMC.kaiten = function(d:Number) {
	this._rotation += d;
};

//myMCインスタンスのkaitenメソッドを2秒間隔で実行
intervalID = setInterval(myMC, "kaiten", 2000, 10);

----------

●一定時間を待つ

インターバルは一定時間間隔で繰り返しの処理を行いたいときに威力を発揮する機能ですが、一定時間を待つタイマーとしても利用できます。
次のサンプルを実行すると5秒後にインターバルで設定したtimeoutイベントが発生するので、そこでインターバルの設定をクリアします。

フレームアクション:
//timerObjオブジェクトの設定
timerObj = new Object();
timerObj.timeout = function() {
	clearInterval(timerID); // インターバルの終了
	trace("タイムアウト"); // 出力→ タイムアウト
};
//計測開始(5秒でタイムアウト)
var timerID = setInterval(timerObj, "timeout", 5000);
Posted by inami at 11:53 AM

[SCRIPTACTION : Array

めんどうだから
配列に関してまとめる。
といっても、引用多し。多謝。

--------------------

■多次元配列
配列の中に配列を入れた多次元配列を作ることができます。
多次元配列は複雑なデータを操作する上で有効な手段となります。多次元配列から要素を取り出す例を見てください。

例:
var colorlist:Array = [["red", "pink"], ["wihte", "blue"], ["green", "black"]]
var myColor:String = colorlist [2][1]; // "black"が入ります。

----------

■配列の値を操作するメソッドとプロパティ
配列の値(エレメント)の個数を調べる、値を追加する、値を削除する、並びを変更するといった操作は、Arrayクラスのメソッドとプロパティを利用します。値の位置は0から数えるので注意してください。

Arrayクラスのメソッドとプロパティ
Array.concat() 配列を連結し、新しい配列として返します。
Array.join() 配列の値を指定のセパレータで結合したストリングを返します。
Array.pop() 配列の最後の値を削除し、削除した値を返します。
Array.push() 配列の最後に値を追加し、配列の値の個数を返します。
Array.reverse() 配列の並びを逆にします。
Array.shift() 配列の最初の値を削除し、削除した値を返します。
Array.slice() 配列の要素を抽出し、新しい配列として返します。
Array.sort() 配列をソートします。
Array.sortOn() 配列内のフィールドに基づいて配列をソートします。
Array.splice() 配列の指定位置に値を挿入・削除し、削除された値を返します。
Array.toString() 値に相当するストリングを返します。
Array.unshift() 値を配列の最初に追加し、配列の新しい長さを返します。
Array.length 値の個数を返します。

例:配列の結合
var aList:Array = [3, 5];
var bList:Array = [9, 8];
var cList:Array = [33, 56];
var x:Array = aList.concat(bList, cList); // [3,5,9,8,33,56]

例:指定位置の値の削除と置き換え
var aList:Array = ["a", "b", "c", "d", "e"];
var bList:Array = ["a", "b", "c", "d"];
aList.splice(1, 3); // 位置1から3個を削除する→["a","e"]
bList.splice(1, 2, "x", "y"); // 位置1から2個を置き換える→["a","x","y","d"]

例:値のソート
var myList:Array = [3, 6, 4, 9, 1];
myList.sort(); // 昇順に並べる→[1,3,4,6,9]
myList.sort(Array.DESCENDING); // 降順に並べる→[9,6,4,3,1]

----------

●{}を使った配列オブジェクト

{}を使った配列オブジェクトは、名前と値という組み合わせでデータを管理するいわゆる連想配列に相当する機能です。
これはプロパティ名とその値という考え方で、書式は{識別子1:値1, 識別子2:値2, 識別子3:値3, ...}のようになります。データ型はObject型です。

例:配列オブジェクトを作る
var goods:Object = {id:"se24", price:1980, size:"M"};
var shoeData:Object = {color:"blue", size:23.5};

配列オブジェクトの値には、インスタンスのプロパティを参照する場合と同じく、ドット演算子(.)または配列演算子([])を使って参照します。

例:配列オブジェクトから値を取り出す
var theColor:String = shoeData.color;
var theSize:Number = shoeData["size"];

配列オブジェクトの値を変更したい場合にもドット演算子(.)または配列演算子([])を使って参照します。

例:配列オブジェクトの値を変更する
shoeData.color = "green";
shoeData["size"] = 24;

----------

●配列を走査する(for~in)

配列や配列オブジェクトのプロパティ名や値を順に調べたい(走査したい)ときにはfor~inが利用できます。変数には、配列の場合には位置が取り出され、オブジェクトの場合にはプロパティ名が取り出されます。

「配列から位置を順に取り出す」
for ( 変数 in 配列){
	// 繰り返すスクリプト
}

「配列オブジェクトからプロパティ名を順に取り出す」
for ( 変数 in 配列オブジェクト){
// 繰り返すスクリプト
}


例:配列の値を調べる
var colors:Array = ["red", "blue", "green", "yellow", "pink"];
for (var pn in colors) {
trace(pn + "=" + colors[pn]);
}

出力結果:
4=pink
3=yellow
2=green
1=blue
0=red


例:配列オブジェクトのプロパティ名と値を調べる
var goods:Object = {id:"sd91", name:"fix7", price:2500, volume:1};
for (var pn in goods) {
trace(pn + "=" + goods[pn]);
}

出力結果:
id=sd91
name=fix7
price=2500
volume=1

Posted by inami at 11:29 AM
2008.03.11

[SCRIPTACTION : Bound

バウンドするスクリプト

●ASバージョン
2.0

外部クラス
boyonboyon.as

class boyonboyon{

//プロパティ-----

var myMc:MovieClip;


//コンストラクタ-----
function boyonboyon(tgtMc:MovieClip){
myMc = tgtMc;
}


//メソッド------
/*
var firstY:Number;//初期位置Y
var tgtY:Number;//落下位置Y
var baseSpeed:Number;//基本落下速度
var accel:Number;//落下加速度
var k:Number;//跳ね返り減速度
var bounds:Number;//はねる回数
*/
function myBound(firstY:Number,tgtY:Number,baseSpeed:Number,accel:Number,k:Number,bounds:Number){
myMc._y = firstY;
myMc.onEnterFrame=function(){
this._y += baseSpeed;
//
if(this._y >= tgtY){
if(baseSpeed > 0){
if(bounds == 0){
this._y = tgtY;
delete this.onEnterFrame;
}else{
bounds--;
}
baseSpeed = -baseSpeed;
baseSpeed *= k;
}
}else{
baseSpeed += accel;
}
}
}
};

上を呼び出すとき

//クラスを呼び出す
var myBoyonBoyon:boyonboyon = new boyonboyon(this);

//メソッド実行(初期位置Y、落下位置Y、基本落下速度、落下加速度、跳ね返り減速度、はねる回数)
myBoyonBoyon.myBound(-200,150,6,6,0.6,4);


Posted by inami at 05:30 PM
2008.03.10

[SCRIPTACTION : Complecated Buttons

2つ前のエントリーの外部ASは
ボタンに関する判定とかがだいぶダメだったので
結局こうなった。

ずっと悩んでいたんだけど
フロー図を手書きしたら
30くらいでプログラムできた。
デザイナーのプラグラムなんてそんなもんだろ?な?な?...

/*
stage_mc > contentsSet_mc > 
*/


class classes.contents.Contents5MC extends classes.contents.ContentsMC
{
//public var myID:Number;

//--------プロパティ
var myMc:MovieClip;
var nowFlag:Number = 0;
var posters:MovieClip;
var postMask:MovieClip;
var prePoster:String;


//--------コンストラクタ
function Contents5MC( )
{
//ポスター初期設定実行
this.myPoster();
//ボタン設定実行
judgeMyBtn();
};


//--------メソッド

//ポスター初期設定
function myPoster()
{
for(var i:Number =0;i<=3;i++){
this.posters["post"+i]._x = 1;
this.posters["post"+i]._y = 1;
}
}

//ボタン管理
function judgeMyBtn(){
for(var i:Number=0;i<=3;i++){

//前提
var mcName:String = "thum"+i;
//サムネ番号とフラグ番号を判定
if(i == nowFlag){
//同じならイベントを消す
this.deleteMyBtn(i);
}else{
//違うならイベントを設定
this.setMyBtn(i);
}

}
}


//
function setMyBtn(myNum:Number){
//定義
myMc = this["thum"+myNum];
myMc.mcNum = myNum;
myMc.postName = "post"+myNum;

//まず、ON状態なら戻す
if(myMc.currentFrame>=3){
myMc.gotoAndStop("off");
}

//イベント設定
myMc.onRollOver = function(){
this.gotoAndStop("on");
}
myMc.onRollOut = function(){
this.gotoAndStop("off");
}
myMc.onRelease = function(){
//深度を変える
_parent.posters[this.postName].swapDepths(10);
_parent.prePoster.swapDepths(9);
//マスクセット
_parent.posters[this.postName].setMask(null);
_parent.posters[this.postName].setMask(_parent.posters.postMask);
_parent.posters.postMask.gotoAndPlay(2);
//フラグを変える
_parent.prePoster = _parent.posters[this.postName];
_parent.nowFlag = this.mcNum;
//再判定
_parent.judgeMyBtn();
}
}


//
function deleteMyBtn(myNum:Number){
//定義
myMc = this["thum"+myNum];

//まず、OFF状態ならONに
if(myMc.currentFrame<=2){
myMc.gotoAndStop("on");
}

//イベント削除
delete myMc.onRollOver;
delete myMc.onRollOut;
delete myMc.onRelease;
}

}

Posted by inami at 10:52 PM

[SCRIPTACTION : Set Mask

セットマスクを面倒だからまとめておく

●ASバージョン
2.0

-----
次の例では、ムービークリップ theMaskee_mc をムービークリップ circleMask_mc のマスクとして使用します。


theMaskee_mc.setMask(circleMask_mc);

ムービークリップを含むマスクレイヤーを作成してから、それに setMask() メソッドを適用すると、setMask() の呼び出しが優先され、元に戻すことはできません。たとえば、マスクレイヤー内のムービークリップ UIMaskee をマスクする別のレイヤーの別のムービークリップ UIMask があるとします。

UIMask.setMask(UIMaskee)

を呼び出すと、その時点から UIMask は UIMaskee によってマスクされます。

ActionScript で作成したマスクをキャンセルするには、setMask() に null を渡します。次のコードでは、タイムラインのマスクレイヤーに影響を与えずにマスクをキャンセルします。

UIMask.setMask(null);

-----
とのこと。

Posted by inami at 05:29 PM

[SCRIPTACTION : About set point of External AS

●ASバージョン
2.0

●テーマ
ASファイルに記述したときの注意点
・ASの階層構造
・プロパティでMCをMCとして定義しなきゃいかん。

-----

例えば外部ASに
対象とするMCを

class classes.XXX.AAA
{
 //AAA記述
 var hunhun:Number = 100;
}

としたら、
そのAAA(MC)の1フレーム目に
//AAA記述
があると考えて良いようだ。

そういう意味では、このAAA内のメソッドに例えば

this(AAAのこと).BBB.onEntarFrame = function()
{
 //BBB用の記述
}

と書いたならば、この
//BBB用の記述
から見て
//AAA記述
は_parentにあたるというわけ。

参照するには
this.BBB.onEntarFrame = function()
{
 //BBB用の記述
 marude = _parent.hunhun;
}

というわけ。
ASの概念の構造もMCの構造に同じというわけ。

外部ASにこれを書いてた。
fadeSpeedを参照する時に_parentとか使ってるあたりにご注目。

あと、プロパティで
var boxs:MovieClip;
としているんですが、[]やなんかで囲えない場合は
ちゃんと「それはMCですよ」って言ってあげないといけないみたい。

class classes.XXX.AAA extends classes.XXX.SSS
{

//プロパティ
var boxs:MovieClip;
var fadeSpeed:Number = 12;

//コンストラクタ
function Contents5MC( )
{
//ボックス初期設定実行
this.myBox();
//ボタン設定実行
this.myBtn();
};


//メソッド

//ボックス初期設定
function myBox()
{
for(var i:Number =0;i<=3;i++){
this.boxs["post"+i]._x = 1;
this.boxs["post"+i]._y = 1;
}
}

//ボタン設定
function myBtn()
{
for(var i:Number =0;i<=3;i++){
//初期設定
//trace(this["thum"+i].waku);

//ロールオーバー
this["thum"+i].onRollOver = function()
{
this.gotoAndStop("on");
_parent.myFadeIn(this.waku);
}

//ロールアウト
this["thum"+i].onRollOut = function()
{
this.gotoAndStop("off");
_parent.myFadeOut(this.waku);
}
}
};

function myFadeIn(mc:MovieClip)
{
mc._alpha = 0;
mc.onEnterFrame = function()
{
if(this._alpha >= 100)
{
this._alpha = 100;
this.onEnterFrame = null;
}
else
{
this._alpha += _parent._parent.fadeSpeed;
}
}
}

function myFadeOut(mc:MovieClip)
{
mc._alpha = 100;
mc.onEnterFrame = function()
{
if(this._alpha <= 0)
{
this._alpha = 0;
this.onEnterFrame = null;
}
else
{
this._alpha -= _parent._parent.fadeSpeed;
}
}
}

}

Posted by inami at 03:53 PM
2008.03.09

[SCRIPTACTION : Read a External XML

FLASHに外部XMLを読み込む。

●ASバージョン
2.0

●用意するもの
XMLファイル

今回は商品に対するコメントををFLASHで表示させる
という想定。

まずXMLファイル

・comment.xml

を用意したら、
次にFLASHにはXML読み込み用の下記AS

this.stop();

//XMLロード
//ファイル名
loadXmlname = "comment.xml";

//XMLload開始
myXML = new XML();

XML.prototype.ignoreWhite = true;//空白無視

//load後の処理
myXML.onLoad = xmlLoaded;

//ファイルLoad
myXML.load(loadXmlname);

//
function xmlLoaded(success) {
//
rootNode = myXML.firstChild;
//子子ノードの全数
_global.nodeNum = rootNode.childNodes.length;
//trace(nodeNum);
//グローバルに格納用のオブジェクトを生成し、値を入れる
for (var i=0; i<_global.nodeNum; i++) {
_global["items"+i] = new Object();
//item name
_global["items"+i].itemName = rootNode.childNodes[i].attributes["itemName"];
//item link URL
_global["items"+i].itemUrl = rootNode.childNodes[i].attributes["itemUrl"];
//comment
_global["items"+i].itemComment = rootNode.childNodes[i].attributes["itemComment"];
//image
_global["items"+i].itemImage = rootNode.childNodes[i].attributes["itemImage"];
//trace(_global["items"+i].itemName);
}
}

そんでもって、お次は
表示用MCに先ほど読み込んだXMLを引っ張ってこさせる

for(i=0;i<=_global.nodeNum;i++){
	var myName:MovieClip = this["huki"+i+"_mv"];
	//画像
	this["huki"+i+"_mv"].thum.loadMovie(_global["items"+i].itemImage);
	//アイテム名
	myName.itemName.html = true;
	myName.itemName.htmlText = "<b><u>"+_global["items"+i].itemName+"</u></b>";
	//URL
	myName.itemUrl = _global["items"+i].itemUrl;
	myName.onRelease = function(){
		//アイテム詳細URL
		getURL(this.itemUrl);
	}
	//コメント
	myName.itemComment.text = _global["items"+i].itemComment;
}

こんな感じで、よろしく。

Posted by inami at 04:27 PM
2008.03.06

[DIALYBe the Man

やっぱり、大人の男には、

余裕

が必要だよね。

と、英会話中に深呼吸した時に思った。
う~ん、マンダム。

Posted by inami at 12:30 PM
2008.03.02

[DIALYLook back myself

ああだこうだと人に指示を出してる己を振り返ると、大した力量も無いのによくそんな偉そうなことを言えたもんだなぁと、どのツラさげてそんなこと言ってるんだと反省する。

どうやったら、どうしたら、皆に信頼してもらえるか、良い方向に進んで行ってもらえるか、思い悩んだり悩まなかったり。本当は彼ら自身で自発的に色々勉強していってもらえると、おじさんは楽なんだけどなぁ...と、また偉そうなことを。そう、指導するという意味での自分の力の無さが課題だなぁ。

今年は、なんか今までとは、ちょっとベクトルが変わりそうな年で、大変そうだけど面白いとも思ったり思わなかったり。人の異動とか、環境の変化とか、デジタルじゃない新しいことを何かやりたいなぁとか、色々あって、でもまぁ、なんとかなるさ。

Posted by inami at 03:47 AM
CopyRight© ´MNGN.COM´. All Rights Reserved.