ラベル [2010]モバイルアプリケーション の投稿を表示しています。 すべての投稿を表示
ラベル [2010]モバイルアプリケーション の投稿を表示しています。 すべての投稿を表示

2011年1月28日金曜日

[MA-11-12] 外部SWFファイルの読み込み(複数背景切替)


background(swf)提出先


Flashからのパスの指定方法
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_1.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_2.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_3.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_4.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_5.swf

character(swf)提出先

Flashからのパスの指定方法
http://www14026u.sakura.ne.jp/ma/11/character/k0*****.swf

base(swf)提出先

Flashからのパスの指定方法
http://www14026u.sakura.ne.jp/ma/11/base/k0*****.swf

最終成果物(fla)提出先


2011年1月26日水曜日

[MA-11-11] 外部SWFファイルの読み込み(背景+キャラクタ)

背景だけではなく,キャラクタも外部SWFファイル化し,任意の背景,及びキャラクタを使用できるようにする.


全体構成


base.swf

base.swf
[Layer]action
 ┃
 ┗ActionScript

[Layer]login
 ┃
 ┣[MovieClipe]loginWindow
 ┃ ┃
 ┃ ┣[テキスト入力]login_user_name
 ┃ ┃
 ┃ ┗[テキスト入力]login_user_pass
 ┃
 ┗[ボタン]loginButton

[Layer]windows
 ┃
 ┣[MovieClipe]status_mc
 ┃ ┃
 ┃ ┣[ダイナミックテキスト](変数名)user
 ┃ ┃
 ┃ ┗[ダイナミックテキスト](変数名)money
 ┃
 ┗[MovieClipe]item_mc

[Layer]character
 ┃
 ┗[MovieClipe]character_stage

[Layer]background
 ┃
 ┗[MovieClipe]background_stage


character.swf

character.swf
[Layer]character
 ┃
 ┗[MovieClipe]character_mc(ActionScriptにonClipEvent含む)


background.swf

background.swf
[Layer]mask
 ┃
 ┗[MovieClipe]hit(characterのあたり判定用)

[Layer]BG

Action Script
status_mc._visible = false;
item_mc._visible = false;
background_stage._visible = false;
character_stage._visible = false;

loginWindow.loginButton.onRelease = function() {
var user_name = loginWindow.login_user_name.text;
var user_pass = loginWindow.login_user_pass.text;
status_xml = new XML();
status_xml.onLoad = userStatus;
status_xml.load("http://www14026u.sakura.ne.jp/ma/11/status.php?user_name='"+user_name+"'&user_pass='"+user_pass+"'");
status_xml.ignoreWhite = true;
function userStatus(success) {
if (success == true) {
status_mc.money = status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue;
status_mc.user = status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue;
itemNum = status_xml.firstChild.firstChild.firstChild.nextSibling.firstChild.nodeValue;
item_mc.loadMovie("http://www14026u.sakura.ne.jp/ma/11/img/"+itemNum+"star.png");
background_stage.loadMovie("http://www14026u.sakura.ne.jp/ma/uploads/background.swf");
character_stage.loadMovie("http://www14026u.sakura.ne.jp/ma/uploads/character.swf");
loginWindow._visible = false;
status_mc._visible = true;
background_stage._visible = true;
character_stage._visible = true;
}
}
};

window_status = 0;
var key_obj:Object = new Object();
key_obj.onKeyDown = function():Void  {
var code = Key.getCode();
if (code == Key.SPACE) {
if (window_status == 0) {
item_mc._visible = false;
status_mc._visible = false;
window_status = 1;
} else if (window_status == 1) {
item_mc._visible = true;
status_mc._visible = true;
window_status = 0;
}
}
};
Key.addListener(key_obj);

ダウンロード(base.fla)
ダウンロード(character.fla)
ダウンロード(background.fla)

2011年1月21日金曜日

[MA-11-10] 外部SWFファイルの読み込み(背景)

ユーザーのログインにあわせて,サーバ上に配置してある背景(及びキャラクタの移動範囲を示すオブジェクト)が記述されたSWFファイルを読み込む.



20110121_11-10.swf

[MA-11-9] ログイン画面の実装

従来ソースコード内に含めていたユーザー名,及びパスワードを,ユーザーが入力した任意の文字列が使えるように改修する.



20110121_11-9.swf

※上下左右キーでキャラクター移動.スペースキーで情報表示ウィンドウのオン/オフが可能です.

2011年1月19日水曜日

[MA-11-8] DBから値を取得3

取得したXMLに含まれるitemの値を用いてサーバ上のPNGファイルを取得し,ステージ上に配置したムービークリップにロードする.



20110121_11-8.swf

1.windowレイヤー上にムービークリップ(W90xH18の矩形)を配置(インスタンス名:item_mc)
2.取得したXMLに含まれるitemの値を用いて取得するファイル名を組み立てる
3.ファイルを取得し,ステージ上のムービークリップにロード

読み込まれるPNGファイル一覧

1star.png

2star.png

3star.png

4star.png

5star.png

サンプル
var user_name = "ユーザー名";
var user_pass = "パスワード";
status_xml = new XML();
status_xml.onLoad = userStatus;
status_xml.load("http://www14026u.sakura.ne.jp/ma/11/status.php?user_name='"+user_name+"'&user_pass='"+user_pass+"'");
status_xml.ignoreWhite = true;
function userStatus(success) {
 if (success == true) {
  money = status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue
  user = status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue;

  itemNum = status_xml.firstChild.firstChild.firstChild.nextSibling.firstChild.nodeValue;
  item_mc.loadMovie("http://www14026u.sakura.ne.jp/ma/11/img/"+itemNum+"star.png");
  }
}

[MA-11-7] DBから値を取得2

ユーザー名・パスワードを用いてサーバー上のXMLを取得し,その中に含まれるmoney,kanaの値をステージ上に表示する.

サンプル
//user = _root.user;
//money = _root.money;
var user_name = "ユーザー名";
var user_pass = "パスワード";
status_xml = new XML();
status_xml.onLoad = userStatus;
status_xml.load("http://www14026u.sakura.ne.jp/ma/11/status.php?user_name='"+user_name+"'&user_pass='"+user_pass+"'");
status_xml.ignoreWhite = true;
function userStatus(success) {
 if (success == true) {
  money = status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue
  user = status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue;

  //取得するXMLファイルのイメージ
  //<ma>
  // <user_status>
  //  <money>100</money>
  //  <item>1</item>
  //  <kana>なまえ</kana>
  // </user_status>
  //</ma>
  trace (status_xml.nodeValue);
  trace (status_xml.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.nextSibling.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue);
  }
}

2011年1月14日金曜日

[MA-11-6] DBから値を取得

FlashからDBに直接接続するのではなく,仲介役となるPHPファイルに接続し,DBに問い合わせた結果をXML形式で受け取る.

1.ブラウザを用いて以下の取得先URLにアクセスし,自身のユーザー名/パスワードを用いて値が取得できるか確認.
(取得されるデータはXML形式のため,ページのソースを表示で内容確認)
取得先URL
http://www14026u.sakura.ne.jp/ma/11/status.php?user_name="ユーザー名"&user_pass="パスワード"

2.自身のユーザー名/パスワードを用いて固有の値(ユーザー毎のmoneyとitemの値)を取得できることが確認できたら,現在作成しているFlaファイルに1で取得出来るmoneyの値が反映されるように修正.

3.itemの値は現状0 or 1を想定しているため,0の時はオブジェクトの表示をOFF,1の時はオブジェクトの表示をONとなるようにする.


(参考)DBに接続し,ユーザーのstatusを返すPHP
<?php
 $db_user  = "ユーザー名";
 $db_password = "パスワード";
 $db_name = "DB名";
 $db_host  = "接続先サーバ名";

//create xml
    header('Content-type: text/xml; charset=utf-8');
    echo '<?xml version="1.0"?><ma>';

 $user_name = null;
 $user_pass = null;

 if(isset($_GET['user_name'])) {
  $user_name = $_GET['user_name'];
  $user_pass = $_GET['user_pass'];

  $con = mysql_connect($db_host,$db_user,$db_password) or die("error!");
  mysql_select_db($db_name,$con) or die("DB is not exist");
  $strsql = "SET CHARACTER SET UTF8";
  mysql_query($strsql,$con);
  $strsql = "SELECT money, item FROM users WHERE name = $user_name AND pass = $user_pass;";
  $res = mysql_query($strsql,$con);

  while ($item = mysql_fetch_array($res)) {
   print "<user_status><money>".$item[0]."</money><item>".$item[1]."</item></user_status>";
  }
  mysql_close($con);
}

    echo '</ma>'; 
?>

2010年12月24日金曜日

[MA-11-5] トグル操作による表示窓のON/OFF

Windowレイヤーに配置した表示窓を,キー操作によりON/OFFさせる.
具体的には,Windowレイヤーの表示窓オブジェクトをMCとし,そのMCを2フレームに分割する.
1フレーム目は空とし,2フレーム目に表示窓オブジェクトを配置する.
そして,ActionScript側でキー操作を受け取り,MCの1フレーム目~2フレーム目の移動を交互に行う.

サンプル
var key_obj:Object = new Object();
key_obj.onKeyDown = function():Void {
 var code = Key.getCode();
 if (code == Key.SPACE) {
  mcInfo.gotoAndStop(mcInfoNum + 1);
  stop();
 }
}
Key.addListener(key_obj);


※もちろんvisible使ってもOK
サンプル
var key_obj:Object = new Object();
key_obj.onKeyDown = function():Void {
 var code = Key.getCode();
 if (code == Key.SPACE) {
  _root.mcInfo._visible = true;
  //_root.mcInfo._visible = false;
 }
}
Key.addListener(key_obj);

2010年12月22日水曜日

[MA-11-4] HTMLからSWFへの引数渡し


20101217.swf

1.FLAファイルにwindowレイヤー追加
ActionScript(windowレイヤー)
user = _root.user;
money = _root.money;

2.windowレイヤーにダイナミックテキストを2つ設置
(それぞれ変数名を「user」「money」とする)

3.SWFファイルをパブリッシュ

4.SWFと同時に生成されたHTMLファイルを編集
(修正箇所:2)
<param name="movie" value="20101217.swf" />
→
<param name="movie" value="20101217.swf?user=sato&money=100" />
<embed src="20101217.swf" quality="high" bgcolor="#ffffff" width="300" height="200" name="20101217" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
→
<embed src="20101217.swf?user=sato&money=100" quality="high" bgcolor="#ffffff" width="300" height="200" name="20101217" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

5.SWFとHTMLをアップロードし,動作確認

ダウンロード1
ダウンロード2

2010年12月10日金曜日

[MA-11-3] DBと連携したFlash(キャラクタの動作作り込み)

前回作成したキャラクタは,前後左右の4面しか用意していないが,よりリアルな動作を実現する為に,キャラクタの各方向に対してモーションを付与する.
具体的には,characterレイヤーの各フレームに配置したムービークリップ「front」「back」「right」「left」に対して複数のフレームを用意し,実際にキャラクターが動いているように見せかける仕掛けとする.



20101208.swf

ダウンロード

2010年12月8日水曜日

[MA-11-2] DBと連携したFlash(基礎部分作成)

最終的にはDBと連携したFlashファイルを作成するが,まずはステージ上を上下左右キーで操作できるキャラクタを作成し,配置する.



20101201.swf

ダウンロード

2010年12月1日水曜日

2010年11月26日金曜日

[MA-10-3] フリーの画像制作環境

Adobe IllustratorやCorel DRAWと同種の,Windows向けベクター形式のグラフィックエディタとして,Inkscapeがリリースされている.

また,Adobe Photoshopと同種の,Windows向けビットマップ形式のグラフィックエディタとしては,GIMPが有名である.

どちらもフリーソフトウェアな為,気軽に導入できるメリットがある.
ただし,業務用途においてはやはりAdobeの製品が一般的であるため,あくまでも補佐的な役割となるであろう.


ここで,Suzukaで使用される画像形式にPDRが存在するが,同じ作者がSVG形式をPDR形式に変換するSVG2PDRというツールをリリースしている.

こちらを利用すれば,フリーのソフトウェアのみで
  1. InkscapeでSVG形式のファイル作成
  2. SVG2PDRでPDR形式にコンバート
  3. PDRをsuzukaに読み込み,SWF出力
を行う事が可能となる.

2010年11月24日水曜日

[MA-10-2] フリーの制作環境を使った作例 (Suzuka)

  1. Suzukaをここからダウンロードし,インストールする.
  2. サンプルをダウンロードする.
  3. Photoshop Elements,もしくはParaDrawを使って画像を作成.
  4. 作成した画像を使って,2のサンプルの画像を差し替え

2010年10月20日水曜日

[MA-9-8] おみくじ付き携帯待ち受け画面 パラメーター調整 (FlashLite2.0/ActionScript2.0)



ma9_8.swf

「占う」ボタンのトグル動作,表示される運勢の頻度調整を追加.

ActionScript2.0(Flash Lite2.0)
buttonFlag = 0;

this.onEnterFrame = function() {
 //バッテリーレベル
 var batteryCharging = fscommand2("GetPowerSource");
 var batteryLevel = fscommand2("GetBatteryLevel");
 var maxBattery = fscommand2("GetMaxBatteryLevel");
 var batteryStatusNum = 0;
 if (batteryCharging) {
  batteryStatusNum = 10;
 } else {
  if (maxBattery == 3) {
   batteryStatusNum = batteryLevel;
  } else if (maxBattery == 100) {
   if (batteryLevel>80) {
    batteryStatusNum = 8;
   } else if (batteryLevel>60) {
    batteryStatusNum = 7;
   } else if (batteryLevel>40) {
    batteryStatusNum = 6;
   } else if (batteryLevel>20) {
    batteryStatusNum = 5;
   } else if (batteryLevel>0) {
    batteryStatusNum = 4;
   }
  }
 }
 batteryStatusNumStr.text = batteryStatusNum;
 batteryPict.gotoAndStop(batteryStatusNum + 1);
 stop();
 _global.BSN = batteryStatusNum;
 //受信レベル
 var signalLevel = fscommand2("GetSignalLevel");
 var maxSignal = fscommand2("GetMaxSignalLevel");
 var signalNum = 0;
 if (maxSignal == 4) {
  signalNum = signalLevel;
 } else if (maxSignal == 3) {
  if (signalLevel>0) {
   signalNum = signalLevel+1;
  }
 }
 signalNumStr.text = signalNum;
 antennaPict.gotoAndStop(signalNum + 1);
 stop();
 _global.SN = signalNum;
 //開閉回数
 var mySharedObject:SharedObject = SharedObject.getLocal("open");
 SharedObject.addListener("open", initHandler);
 mySharedObject.data.count = 0;
 mySharedObject.flush();
 function initHandler() {
  var date:Number = Number(mySharedObject.data.count);
  date++;
  mySharedObject.data.count = date;
  mySharedObject.flush();
  checkNumStr.text = mySharedObject.data.count;
 }
 if (buttonFlag == 0) {
  fortunePict.gotoAndStop(11);
  stop();
 }
};

fortuneButton.onRelease = function() {
 if (buttonFlag == 0) {
  fortunePict.play();
  buttonFlag = 1;
 } else if (buttonFlag == 2) {
  fortunePict.play();
  fortuneStr.text = "";
  buttonFlag = 1;
 } else {
  fortuneArray = ["大吉", "大吉", "吉", "半吉", "小吉", "末小吉", "末吉", "凶", "凶", "凶"]; 
  fortuneNum = Math.floor(Math.random() * 9) + 1;
  //バッテリーの状況によって運勢変化
  switch (_global.BSN) {
   case (0) :
    fortuneNum = fortuneNum + 2;
    break;
   case (1) :
    fortuneNum = fortuneNum + 1;
    break;
   case (3) :
    fortuneNum = fortuneNum - 1;
    break;
   case (4) :
    fortuneNum = fortuneNum + 1;
    break;
   case (8) :
    fortuneNum = fortuneNum - 1;
    break;
   case (10) :
    fortuneNum = fortuneNum - 2;
    break;
  }
  //電波の状況によっても運勢変化
  switch (_global.SN) {
   case (4) :
    fortuneNum = fortuneNum - 2;
    break;
   case (3) :
    fortuneNum = fortuneNum - 1;
    break;
   case (2) :
    fortuneNum = fortuneNum;
    break;
   case (1) :
    fortuneNum = fortuneNum + 1;
    break;
   case (0) :
    fortuneNum = fortuneNum + 2;
    break;
  }
  //特定の条件がそろった場合
  if(_global.BSN == 0 && _global.SN == 0){
   fortuneNum = 0;
  } else if (_global.BSN == 10 && _global.SN == 4){
    fortuneNum = fortuneNum - 3;
  }
  if(fortuneNum < 0){
   fortuneNum = 0;
  } else if (fortuneNum > 9){
    fortuneNum = 9;
  }
  fortuneStr.text = "あなたの運勢は、"+fortuneArray[fortuneNum]+"("+fortuneNum+")です";
  fortunePict.gotoAndStop(fortuneNum + 1);
  stop();
  buttonFlag = 2;
 }
};

2010年10月15日金曜日

[MA-9-7] おみくじ付き携帯待ち受け画面 (FlashLite2.0/ActionScript2.0)



ma9_7.swf

ActionScript2.0(Flash Lite2.0)
this.onEnterFrame = function() {
 //バッテリーレベル
 var batteryCharging = fscommand2("GetPowerSource");
 var batteryLevel = fscommand2("GetBatteryLevel");
 var maxBattery = fscommand2("GetMaxBatteryLevel");
 var batteryStatusNum = 0;
 if (batteryCharging) {
  batteryStatusNum = 10;
 } else {
  if (maxBattery == 3) {
   batteryStatusNum = batteryLevel;
  } else if (maxBattery == 100) {
   if (batteryLevel>80) {
    batteryStatusNum = 8;
   } else if (batteryLevel>60) {
    batteryStatusNum = 7;
   } else if (batteryLevel>40) {
    batteryStatusNum = 6;
   } else if (batteryLevel>20) {
    batteryStatusNum = 5;
   } else if (batteryLevel>0) {
    batteryStatusNum = 4;
   }
  }
 }
 batteryStatusNumStr.text = batteryStatusNum;
 batteryPict.gotoAndStop(batteryStatusNum + 1);
 stop();
 _global.BSN = batteryStatusNum;
 //受信レベル
 var signalLevel = fscommand2("GetSignalLevel");
 var maxSignal = fscommand2("GetMaxSignalLevel");
 var signalNum = 0;
 if (maxSignal == 4) {
  signalNum = signalLevel;
 } else if (maxSignal == 3) {
  if (signalLevel>0) {
   signalNum = signalLevel+1;
  }
 }
 signalNumStr.text = signalNum;
 antennaPict.gotoAndStop(signalNum + 1);
 stop();
 _global.SN = signalNum;
 //開閉回数
 var mySharedObject:SharedObject = SharedObject.getLocal("open");
 SharedObject.addListener("open", initHandler);
 mySharedObject.data.count = 0;
 mySharedObject.flush();
 function initHandler() {
  var date:Number = Number(mySharedObject.data.count);
  date++;
  mySharedObject.data.count = date;
  mySharedObject.flush();
  checkNumStr.text = mySharedObject.data.count;
 }
};
topButton.onRelease = function() {
 fortuneArray = ["大吉", "大吉", "吉", "半吉", "小吉", "末小吉", "末吉", "凶", "凶", "凶", "凶", "凶"]; 
 fortuneNum = Math.floor(Math.random()*(_global.BSN+_global.SN));
 fortuneStr.text = "あなたの運勢は、"+fortuneArray[fortuneNum]+"("+fortuneNum+")です";
 fortunePict.gotoAndStop(fortuneNum + 1);
 stop();
};

2010年10月8日金曜日

[MA-9-6] random関数の利用 (FlashLite2.0/ActionScript2.0)



ma9_6.swf

ランダム関数を使用すると端数が発生するため,出力された値を使って特定のフレームを表示したい場合には端数の処理が必要となります.

Math.floor 小数点以下切り捨て 0 - 9
Math.ceil 小数点以下切り上げ 1 - 10
Math.round 小数点以下四捨五入 0 - 10

ActionScript2.0(Flash Lite2.0)
topButton.onRelease = function() {
 fortuneArray = ["大吉", "大吉", "吉", "半吉", "小吉", "末小吉", "末吉", "凶", "凶", "凶"]; 
 fortuneNum = Math.floor(Math.random()*(_global.BSN+_global.SN));
 fortuneStr.text = "あなたの運勢は、"+fortuneArray[fortuneNum]+"("+fortuneNum+")";
 //gotoAndStop(fortuneNum);
};

[MA-9-5] 携帯電話の開閉回数・バッテリー状態・電波状態の表示サンプル (FlashLite2.0/ActionScript2.0)

携帯電話の開閉回数,バッテリー状態,電波状態を表示するサンプル



ma13debug.swf

ActionScript2.0(Flash Lite2.0)
this.onEnterFrame = function() {
//debug用 SharedObject利用可否チェック
 var checkSharedObject = "none";
 checkSharedObject = System.capabilities.hasSharedObjects;
 checkSharedObjectStr.text = checkSharedObject;

//debug用 キャリア判定
 maxBatteryTemp = fscommand2("GetMaxBatteryLevel");
 var carrier = "other";
 if (maxBatteryTemp == 3) {
  carrier = "au/softbank";
 } else if (maxBatteryTemp == 100) {
  carrier = "docomo";
 } else {
  carrier = "other";
 }
 carrierStr.text = carrier;

//バッテリーレベル
 var batteryCharging = fscommand2("GetPowerSource");
 var batteryLevel = fscommand2("GetBatteryLevel");
 var maxBattery = fscommand2("GetMaxBatteryLevel");
 var batteryStatusNum = 0;
 if (batteryCharging) {
  batteryStatusNum = 10;
 } else {
  if (maxBattery == 3) {
   batteryStatusNum = batteryLevel;
  } else if (maxBattery == 100) {
   if (batteryLevel>80) {
    batteryStatusNum = 8;
   } else if (batteryLevel>60) {
    batteryStatusNum = 7;
   } else if (batteryLevel>40) {
    batteryStatusNum = 6;
   } else if (batteryLevel>20) {
    batteryStatusNum = 5;
   } else if (batteryLevel>0) {
    batteryStatusNum = 4;
   }
  }
 }
 batteryStatusNumStr.text = batteryStatusNum;

//受信レベル
 var signalLevel = fscommand2("GetSignalLevel");
 var maxSignal = fscommand2("GetMaxSignalLevel");
 var signalNum = 0;
 if (maxSignal == 4) {
  signalNum = signalLevel;
 } else if (maxSignal == 3) {
  if (signalLevel>0) {
   signalNum = signalLevel+1;
  }
 }
 signalNumStr.text = signalNum;

//開閉回数
 var mySharedObject:SharedObject = SharedObject.getLocal("open");
 SharedObject.addListener("open", initHandler);
 mySharedObject.data.count = 0;
 mySharedObject.flush();
 function initHandler() {
  var date:Number = Number(mySharedObject.data.count);
  date++;
  mySharedObject.data.count = date;
  mySharedObject.flush();
  checkNumStr.text = mySharedObject.data.count;
 }
};

※PC上で動作確認を行う際は,iモードHTMLシミュレータⅡを使用すると便利です.

2010年10月6日水曜日

[MA-9-4] バッテリーの状態を取得 (FlashLite2.0/ActionScript2.0)

携帯電話の電池の状態をFlashから取得するには、以下のFScommand2を使用します.

AC駆動/バッテリー駆動の判別
var batteryCharging = fscommand2("GetPowerSource");

現在のバッテリー残量
var batteryLevel = fscommand2("GetBatteryLevel");

バッテリーの最大容量
var maxBattery = fscommand2("GetMaxBatteryLevel");

※バッテリーの最大容量の値がキャリアによって異なる事に注意.

キャリア満充電
docomo01-2021-4041-6061-8081-100
au0123
softbank0123

最大バッテリ容量の値がキャリアによって異なる事を利用して,場合分けする例

ActionScript2.0(Flash Lite2.0)
batteryCharging = fscommand2("GetPowerSource");
batteryLevel = fscommand2("GetBatteryLevel");
maxBattery = fscommand2("GetMaxBatteryLevel");
batteryStatusNum = 0;

if(batteryCharging){
    batteryStatusNum = 10;
}else{
 if(maxBattery == 3){
  batteryNum = batteryLevel;
 }else if(maxBattery == 100){
  if(batteryLevel > 80){
   batteryStatusNum = 8;
  }else if(batteryLevel > 60){
   batteryStatusNum = 7;
  }else if(batteryLevel > 40){
   batteryStatusNum = 6;
  }else if(batteryLevel > 20){
   batteryStatusNum = 5;
  }else if(batteryLevel > 0){
   batteryStatusNum = 4;
  }
 }
}

batteryStatusNum
バッテリーレベルキャリア
0au/softbank
11au/softbank
22au/softbank
33au/softbank
41-20docomo
521-40docomo
641-60docomo
761-80docomo
881-100docomo
9
10充電中au/softbank/docomo