- 2009-06-05 (金)
- Action Script 2.0
Action Script 3.0 の時は割とクラスを多用する感じになるんだけども、仕事の場合は、まだまだ Action Script 2.0 で作る機会が多い(あくまでも個人的な状況)。
で、2.0 の場合はあまりクラスを利用することが無いので、必然的にいろいろな関数を定義して処理を行っている。
そこで、個人的に良く使う関数をメモ代わりにまとめてみたいと思う。
テキスト検索置換
まぁ、よくあるテキストの検索置換。これは多分、大多数の人が同じような処理で使っている人も多いだろうなー。
function textReplace(T, O, N) {
var textArray = new Array();
textArray = T.split(O);
return textArray.join(N);
}
使い方はこんな感じ。
textReplace(txt:String, stxt:String, rtxt:String);
| txt | 対象となるテキスト |
| stxt | 検索する文字 |
| rtxt | 置換する文字 |
| 戻り値:String | 検索置換したテキスト |
(例)
var txt:String = "ABCDEF";
txt = textReplace(txt, "DEF", "ABC");
trace(txt);//⇒「ABCABC」
縦横比を維持して特定領域にリサイズ
フォトスライドショーなどでよく利用するリサイズ処理。オブジェクトを領域に対してどのようにリサイズするか 2 パターンあり。
領域全てにオブジェクトが表示されるようリサイズ
下図のような感じでリサイズする処理。

function resizeAll(MC, X, Y, W, H) {
//横に合わせる
MC._width = W;
MC._yscale = MC._xscale;
if (MC._height < H) {
//縦に合わせる
MC._height = H;
MC._xscale = MC._yscale
}
MC._x = (W - MC._width) / 2 + X;
MC._y = (H - MC._height) / 2 + Y;
}
使い方はこんな感じ。
resizeAll(MC:MovieClip, X:Number, Y:Number, W:Number, H:Number);
| MC | リサイズを行うムービークリップ |
| X | 対象領域のX座標 |
| Y | 対象領域のY座標 |
| W | 対象領域の幅 |
| H | 対象領域の高さ |
| 戻り値 | なし |
オブジェクトの全てが領域内に表示されるようリサイズ
下図のような感じでリサイズする処理。

function resizeFit(MC, X, Y, W, H) {
//横に合わせる
MC._width = W;
MC._yscale = MC._xscale;
if (MC._height > H) {
//縦に合わせる
MC._height = H;
MC._xscale = MC._yscale
}
MC._x = (W - MC._width) / 2 + X;
MC._y = (H - MC._height) / 2 + Y;
}
使い方はこんな感じ。
resizeFit(MC:MovieClip, X:Number, Y:Number, W:Number, H:Number);
| MC | リサイズを行うムービークリップ |
| X | 対象領域のX座標 |
| Y | 対象領域のY座標 |
| W | 対象領域の幅 |
| H | 対象領域の高さ |
| 戻り値 | なし |
整列座標を配列化
オブジェクトなどを縦横に整列させて配置する場合などに、座標情報を配列化する処理。
function getLineXY(DefX, DefY, divX, divY, n, all, type) {
//座標格納用の配列を生成
var arrayLC = new Array();
//座標計算
for (i = 0; i < all; i++) {
var XY = new Object();
//type = 1の時は縦方向に計算、それ以外は横方向に計算
XY.x = (type == 1) ? (divX * Math.floor(i / n)+DefX) : (divX * (i % n) + DefX);
XY.y = (type == 1) ? (divY * (i % n) + DefY) : (divY * Math.floor(i / n) + DefY);
//配列に座標を格納
arrayLC.push(XY)
}
//配列を返す
return arrayLC;
}
使い方はこんな感じ。
getLineXY(DefX:Number, DefY:Number, divX:Number, divY:Number, n:Number, all:Number, type:Number);
| DefX | 原点のX座標 |
| DefY | 原点のY座標 |
| divX | 水平方向の間隔の数値 |
| divY | 垂直方向の間隔の数値 |
| n | 1行(列)に配置する個数 |
| all | 整列する個数 |
| type | 0:水平方向に整列(省略可)/1:垂直方向に整列(省略した場合は0) |
| 戻り値:Array | 座標の配列 |
(例)
var arr:Array = new Array();
arr = getLineXY(100, 100, 50, 20, 6, 15, 0);
trace(arr[0].x)://⇒「100」
trace(arr[0].y)://⇒「100」
trace(arr[9].x)://⇒「250」
trace(arr[9].y)://⇒「120」
trace(arr[14].x)://⇒「200」
trace(arr[14].y)://⇒「140」
図で説明すると下記のような感じとなる。

この記事をブックマークしておく
コメント:0
トラックバック:0
- この記事のトラックバックURL
- http://god.xsrv.jp/__mt/mt-tb.cgi/1463
- トラックバックを受ける記事
- 【小技】個人的に良く使う Action Script 2.0 の関数 from 1ka2ka.com Flash & Action Script