ウェブインコ

インコの技術メモ

Flash

■背景が透明のFlash
<para name=" と <embed src= に、 wmode="transparent" を追加。
例)
<param name="wmode" value="transparent" />
<embed src="swf/top.swf" quality="high" wmode="transparent" bgcolor?

■ムービークリップの色指定
絵も文字も一緒。ただし一色。
var color = new Color(MC);
color.setRGB("0xff0000");
var color2 = new Color(MC2);
color2.setRGB("0xff0000");

■ボタンをクリックして遷移
一番簡単なのはボタンのムービークリップに以下を書き込みます。
on(release){
  gotoAndPlay(2);
}
しかし、脱出ゲームや間違い探しなど、カーソルが指アイコンに変化したら嫌な時には、通常のムービークリップに以下のように書き込みます。
onClipEvent (mouseUp) {
  if(_xmouse>40 && _xmouse<80 && _ymouse>160 && _ymouse<200){
    _root.gotoAndPlay(2);
  }
}
ボタンと違って _root. 等、場所を明確にしないといけません。
マウスの座標でボタンの位置を検査しないといけません。
フレームに書くと以下のようになります。
onMouseDown=function(){
  if(_xmouse>40 && _xmouse<80 && _ymouse>160 && _ymouse<200 && _root._currentframe != 2){
    _root.gotoAndPlay(2);
  }
}

■getURLがきかない
ブログパーツのように、他のドメインによばれたFlashのgetURLが効かないケースが有ります。
このときパラメーターを以下のように sameDomain を always に書き換えます。
<param name="allowScriptAccess" value="always"/>
<embed allowScriptAccess="always" />
詳しくは以下
http://support.adobe.co.jp/faq/faq/qadoc.sv?229684+002
http://www.adobe.com/jp/devnet/flash/articles/fplayer8_security_09.html

■z-indexとか
document.createElement で生成したものがFlashの後ろに隠れてしまうのを回避するには、wmodeを指定します。
<param name="wmode" value="transparent"/>
<embed wmode="transparent" />
しかしこれには以下のようなクセがあります。
wmode指定なし
再生速度がやや遅くなるが,ホイール操作,キー入力,日本語入力等スムーズに行える.
wmode指定あり
ホイール操作,キー入力,日本語入力が使えないが再生速度が通常になる.

■Flashで指定したクッキーの保存場所
◆XP
Documents and Settings\ユーザ名\Application Data\Macromedia\Flash Player\#SharedObjects\ユーザIDっぽい\以下
◆Windows7
C:\Users\ユーザーの名前\AppData\Roaming\Macromedia\Flash Player\#SharedObjects
(※ユーザーのフォルダーでAppDate以下がみつからないときは、フォルダーのパス欄をダブルクリックして、『\AppData\Roaming\Macromedia\Flash Player\#SharedObjects』をユーザー名の後にコピペして強制移動)
ですので、いくらブラウザーでクッキーの削除を行っても無駄です。

actionscript
■1?10の整数の乱数
scene = int(Math.random()*10)+1;

■飛び先を「ラベル」+「変数」で
gotoAndPlay("scene" add scene);

■フレームを相対的に指定
gotoAndPlay(_currentframe-1);

■キーボードの受け取り方(PC)
myObj = new Object();
myObj.onKeyDown = function(){
gotoAndPlay(17);
}
Key.addListener (myObj);

■音の鳴らし方
1)
読み込みで音データーを読み込む。
wav.au.mp3
2)
[control]+クリック「リンゲージ」にて、
「このシンボルを書き出す」をチェック。
「識別子」に任意名をつける。(↓はStart)
3)
ゲーム開始時のフレームあたりにactionで下記のような設定を書き込む。
sndStart = new Sound();
sndStart.attachSound( "Start" );
↑           ↑
変数         識別子の名前
4)
鳴らしたいシンボルのactionなどで、下記2行目のように書く。
on (release, keyPress "") {
_root.sndStart.start();
}

■深度の変更
on (press) ←1
startDrag (""); ←2
_root.myDepth = Number ( _root.myDepth + 1); ←3
_root.c01.swapDepths(_root.myDepth); ←4
}
on (release) { ←5
stopDrag (); ←6
}

→1 マウスが押された場合
→2 自分自身(ウインドウ)をドラッグ可能な状態にする。
(自分自身を指すヌル「" "」は「this」でもよい)
→3 rootにある変数「myDepth」に1を足したものを「myDepth」に代入する
→4 1行上の(3)でプラス1された変数「myDepth」と入れ替える。
これで、クリックしたウインドウがいちばん上の深度となり、いちばん上に表示されることになる
→5 マウスが離れた場合
→6 自分自身(ウインドウ)のドラッグを止める

■ランダム
_parent["ko"+es_num]._x = Math.random()*250+40;