- 2008-11-11 (火)
- Flash Lite 3.0
ぶっちゃけ Flash Lite で外部ファイル読み込みという構成自体にあまり意味がない(汗
理由は単純。NTT docomo の場合、外部読み込みの容量の累計が 100KB を超えると「最大サイズを超えました」というエラーが表示されてしまうため。他キャリアでは累計に関係なく読み込める場合もあるのだが…。
まぁ、それでも、例えば、ランダムで画像を読み込んでコンテンツがそこで終了してしまうような構成だと、外部読み込みを行うことでバリエーションを増やすことができるといえばできる。あまり活用事例が少なそうな印象だけども(;´д`)ノ
いつか役立つ日も来るかもしれないと、とりあえずサンプルを作ってみた。
ちなみに、docomo の SH905i で検証してみたところ、やはり累計 100KB を超えるとファイルが読み込めない。アンロード処理を行ってもムリ。ちなみに同じファイルは何度もで読み込み可能。
また、ローディング中の容量はやはり取得できないみたいでローディング状況を表示することもできないのかな…。あとは、JPG / SWF ファイルは問題なかったのだけども、GIF / PNG / BMP 画像は読み込み不可。画像形式に関しては携帯の機種などにも依存されるみたい(?)。
サンプルのソースはこんな感じ。
//変数
var itemArr:Array = [""];
itemArr.push("01.jpg");
itemArr.push("01.jpg");
itemArr.push("02.jpg");
itemArr.push("03.jpg");
itemArr.push("04.gif");
itemArr.push("05.swf");
itemArr.push("06.png");
itemArr.push("07.bmp");
//初期処理
initStage();
initBtn();
initKeyEvent();
bytes.text = _root.getBytesTotal();
//ステージ設定
function initStage():Void {
//ステージサイズ
Stage.scaleMode = "showAll";
Stage.align = "";
//画質設定
_quality = "BEST";
}
//ボタン処理
function initBtn() {
var btn:MovieClip;
for (var i = 1; i <= 9; i++) {
btn = eval("b"+i);
btn.no = i;
btn.flag = false;
btn.loader._visible = false;
btn.per._visible = false;
//btn._focusrect = false;
btn.onRelease = function() {
if (this.flag) {
unloadObj(this);
} else {
loadObj(this.no, this);
}
}
}
}
//キーイベント
function initKeyEvent() {
var keyListener:Object = new Object();
keyListener.onKeyDown = function () {
var key = chr(Key.getAscii());
var btn = eval("b" + key);
if (btn.flag) {
unloadObj(btn);
} else {
loadObj(key, btn);
}
}
Key.addListener(keyListener);
}
//ロード処理
function loadObj(n:Number, btn:MovieClip) {
var loadListener:Object = new Object();
loadListener.onLoadStart = function(target:MovieClip) {
btn.loader._visible = true;
btn.per._visible = true;
btn.per.text = "0";
}
loadListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
btn.per.text = Math.round(bytesLoaded / bytesTotal * 100);
}
loadListener.onLoadInit = function(target:MovieClip) {
btn.loader._visible = false;
btn.per._visible = false;
btn.flag = true;
sizeAdjust(btn.base, btn.mask);
bytes.text = _root.getBytesTotal();
delete loadListener;
delete mcl;
}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(loadListener);
mcl.loadClip(itemArr[n], btn.base);
}
function sizeAdjust(img:MovieClip, mask:MovieClip) {
var gW:Number = mask._width;
var gH:Number = mask._height;
img._width = gW;//横に合わせる
img._yscale = img._xscale;
if (img._height > gH) {
img._height = gH;//縦に合わせる
img._xscale = img._yscale
}
img._x = mask._x + (gW - img._width) / 2;
img._y = mask._y + (gH - img._height) / 2;
}
//アンロード処理
function unloadObj(btn:MovieClip) {
btn.base.unloadMovie();
btn.flag = false;
}
コメント:0
トラックバック:0
- この記事のトラックバックURL
- http://god.xsrv.jp/__mt/mt-tb.cgi/1382
- トラックバックを受ける記事
- FL3 | loadMovie の検証サンプル from 1ka2ka.com
