「PHP入門」を読む その3

PHP入門←教材はここ!

ユーザー定義関数

  • 関数定義に関してASとほぼ同じ。
  • 関数定義の一般的な書式

 function 関数名() {
  処理に必要なプログラム
  }

  • 戻り値がある場合

  function samp() {
   return(戻り値);
  }

  • サンプル
 <?php
  function strong($text) {
    return("<em>$text</em>\n");
    }

  print(strong("この文字は強調されます"));
 ?>
  • 引数の値を渡す場合と、引数の参照を渡す場合があって、参照渡しをすると変数本体が変化する。
  • なるほど意識してなかったけどこんなやり方があったのか。
  • サンプル
<?php
  function num($a) {
    $a = ($a +2) * $a;
      return $a;
    }

   $b = 5;
   print("\$b の初期値は". $b. " です<br>\n");
   $c = num($b);
   print("関数に渡された \$b の値は". $b. " です<br>\n");
   print("関数の実行結果は ".$c. " です");
 ?>
  • 出力結果

 $b の初期値は 5 です
 関数に渡された $b の値は 5 です
 関数の実行結果は 35 です

  • サンプルの「num($a)」を「num(&$a)」に変更し参照渡しした出力結果

 $b の初期値は 5 です
 関数に渡された $b の値は 35 です
 関数の実行結果は 35 です

引数にアンパサンド「&」をつけると、「参照渡し」(リファレンス渡しとも言う)となり、引数として渡された変数自体の値を変化させることができます。

クラスとオブジェクト

  • クラスの定義もほぼASと同じ感じ。オブジェクト型言語ってみんなこんな感じなのかな。
  • サンプル*1
  class Shopping {
     var $item = "コンピュータ";
     var $price = 99800;         // ここまでメンバ変数の設定

     function getTotal() {
       $tax = $this->price * 0.05;
       return $this->price + $tax;
      }                          // ここまでメソッドの定義
   } 
  • さりげなく書いてある「$this->price」って何?と思ったら、次に書いてあるっぽい。
  • はい、オブジェクトの生成は次の書式。

$変数 = new クラス名();

  • 定義したクラスを利用するために「new」でオブジェクトの生成。
  • これにより指定した変数にオブジェクトが格納されると。なるほど。
  • そして実際にクラスのメンバ変数やメソッドを取り込む記述が以下。
   $newShopping = new Shopping();
     $item = $newShopping->item
  • ここでやってるのは、変数newShoppingにクラスShoppingのオブジェクトを格納して、変数itemにクラスshoppingのメンバ変数itemを格納してるってことかな?
  • このあたりの説明がほぼ無いのが初心者には厳しいのでは。
  • 次にサンプルコードあり。
  • サンプル
 <?php
 class Shopping {
   var $item =  "コンピュータ";
   var $price = 99800;

   function getTotal() {
     $tax = $this->price * 0.05;
     return $this->price + $tax;   // 税込価格の設定
    }
  } 

  $result = new Shopping();
  $item = $result->item;
   print("$item の会計は".$result->getTotal()."円になります\n");
 ?>
  • 出力結果

 コンピュータ の会計は104790円になります

  • だいたい思った通りに動いてますね。
  • メソッド呼び出すのも「$result->getTotal()」と変数と同じのりなんだ。

日付と時間

  • おっといきなりいっぱいあり。ワールドワイドだ。
  • 普通に扱うのはUNIX時だけあればいいと思ってたけど、世界協定時UTC*2でいいのかな。日本は+9hですね。
  • 日付情報の取得にはgetdate()関数
  • 連想配列として各要素をインデックスに持つ。
  • 細かく覚えなくてもいちいちリファレンス参照したらいいかな。
  • 以下にサンプルコードの改造版。
  • サンプル
<?php
  $today = getdate();
  print("$today[year]$today[mon]$today[mday]日<br>\n");
  print("現在の時刻$today[hours]$today[minutes]$today[seconds]秒<br>\n");
  print("今年1月1日から $today[yday]日目です<br>\n");
  print("$today[weekday] $today[month]/$today[mday]/$today[year]");
?>
  • 出力結果

 2009年3月10日
 現在の時刻14時50分42秒
 今年1月1日から 68日目です
 Tuesday March/10/2009

  • 時刻も書き出せるようにしてみました。
  • もうひとつdate()関数という便利そうなモノが!
  • 引数の指定によっていろんなフォーマットで時刻を表示できるとのこと。
  • サンプル
<?php
  $today = date("Y/m/d l H:i:s");
    print($today);
?>
  • 出力結果

 2009/03/10 Tuesday 14:52:40

画像処理

<?php
header("content-type: image/png");
$image = imagecreate(100,100); //横幅と高さ指定

$back = imagecolorallocate($image, 0, 0, 0); //RGBで色指定
$red = imagecolorallocate($image, 255, 0, 0) 
imagepolygon( $image, array( 10, 80, 80,80, 80, 10 ), 3, $red ); //多角形の生成

  imagepng($image); //PNG画像をブラウザに出力
  imagedestroy($image); //メモリのから画像リソースの解放
?>
  • 出力結果

 

  • このサンプルをいつも通りにブラウザで見てもエラーが出た。imgタグで呼び出す必要あり。
  • 多角形生成のimagepolygon()関数の書式は以下。

imagepolygon (画像リソース, array(頂点座標), 頂点総数, 色番号);

  • 気になるのが「$back」というのは画像処理クラスのメンバ変数だったりするのかな。

セッション管理

  • 要は認証ページなどで同一ユーザーであるかの判断が必要な場合の話のよう。

セッション管理では、認証が成功したクライアントに対して、1つの 「セッションID」 を発行します。そのセッションIDをクライアントのクッキー、あるいは URLを書き換えることによって同一ユーザとみなし、セッション中の管理が容易く行えることになります。

  • セッション変数って何度も言ってたらゲシュタルト崩壊しそう。
  • ブラウザは渡されたセッションIDをクライアントに送ることで認証ページへすすめる。許可書の発行ですね。
  • セッション変数に値を格納するのが次の書式。

$_SESSION[セッション変数名] = 値;

  • サーバにはセッションの数だけセッションIDを保存したファイルが生成される。

正規表現

  • 本当にさらっとどんどん進む。
  • 正規表現についてさらっと。
  • 知らなければさっぱり分かんないよなー。

読了

  • つーわけでさらっと全体読みました。本当に概要的な感じ。
  • 詳しくは公式マニュアルで調べろってことかな。
  • もう少し詳細な系統立てたテキストも読んでみたい気がします。
  • もうちょい探してみるか。

*1:シンタックス・ハイライトのファイルタイプをphpにすると「

*2:wikiによると「協定世界時の略称はUTC(Universal Time, Coordinated)である」。協定世界時と順番が違う。

「PHP入門」を読む その1

PHP入門←教材はここ!

いつものように教材を読みながらポイント書き出したり思ったこと書き並べます。

PHPとは

  • PHP is Hypertext Pre-processer」*1の略だと。なるほどHTML(Hypre Text Markup Language)と相性いいのは当たり前か。
  • PHPのメリットとしてあげられているのは以下。
    • (CGIと比べて)実行が早く負荷が小さい。
    • 簡単、デバッグが楽。
    • どのような種類のデータベースとも接続可能。

PHPの実体は、Webサーバに置かれるソフトウエアの Apacheモジュールとして動作するスクリプト言語を実行する環境を指します。HTML文書中に記述されたスクリプトPHPが実行し、結果を HTMLデータとしてWebブラウザに出力する仕組みがあります。

PHPとは

PHP制作環境の設定

これは前回Mac上での動作を確認してるのでスルー。

PHPスクリプトの基本構造

  • 早速以下のサンプルコードを確認してみました。
  • コード
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" 
        content="text/html; charset=UTF-8"> <!-- Shift_Jisから変更 -->
<title>PHP入門</title>
</head>

<body>
<p>今日は、<?php echo date("Y/m/d"); ?> です。</p>
</body>
</html>
  • 出力結果

今日は、2009/03/09 です。

  • サンプルのままだと文字化けしたので文字コードUTF-8に変更した。多分Macだからかな。
  • とにかくphpファイルをブラウザで見る時は「ファイルを見る」でファイル指定するのではなく。URLを「http://localhost/~username/test1.php」と指定しないとphpが動作しない模様。

定数と変数

  • 定数の定義にはdefine()関数
  • 書式

 define("定数名","値");

  • サンプル
  <?php
     define("banban", "ばんばん");
     print(banban);                // 定数banban の中身を表示する
  ?>
  • 変数定義には「$」を用いる。
  • 書式

$変数名 = 変数に代入する値

  • サンプル 論理値

  $banban = true;

  • サンプル 整数

  $banban = 2000;

  $banban = 3.14159265;

  • サンプル 文字列

  $banban = "ばんばんは当サイトの作者のハンドルネームです";

  • ずっと「banban」って何かなーと謎だったんで最後に分かりました。
  • これからはバンバン先生と呼びます。

PHPの変数名は、先頭に数字があってはいけません。基本的には、大文字と小文字を区別しませんが、対象によって異なる場合があります。

  • PHPで利用できる命名の文字
    • a 〜 z
    • A 〜 Z
    • 0 〜 9 (先頭には利用できない)
    • 0x7F 〜 0xFF までのコードを持つ文字
    • _ (アンダーバー)
  • なんと日本語も使えるらしい。使いたくないけど、怖いから。

配列

  • 一番簡単な配列への代入法。
 <?php
   $banban[] = "HTML";
   $banban[] = "XHTML";
   $banban[] = "XML";
  ?>
  • これだと順番にインデックス0から2までに格納できる。
  • array()関数を使うと一度に記述できる。
 <?php
   $banban = array("HTML", "XHTML", "XML", "XSLT", "RSS");
    print($banban[1]);
 ?>
  • 出力結果

 XHTML

  • インデックスの区切り文字を指定して配列に格納していくのがexplode()関数。
<?php
   $banban = explode(",", "HTML,XHTML,XML,XSLT,RSS");
    print($banban[3]);
 ?>
  • 出力結果

 XSLT

  • これは本当に実用性がありそうな関数。
  • 連想配列としてインデックスに文字列を使うことも可能。
  • この場合ループで要素を書き出す時に少し面倒。list()echo()関数を使うらしい。
  • サンプル
<?php
  $fruit = array("Apple" => "りんご", "Orange" => "みかん", 
                 "Grape" => "ぶどう");
    while(list ($key, $val) = each($fruit)) {
      print ("インデックスの $key は、$val です<br>\n");
     }
?>
  • 出力結果

インデックスの Apple は、りんご です
インデックスの Orange は、みかん です
インデックスの Grape は、ぶどう です

  • ここで使われてるlist()関数について分かんないとよく飲み込めないんでそっちも参照してみた。
  • 書式

  list(変数) = array (インデックス);

  • サンプル
list($orange,$apple,$grape) = array("りんご", "みかん", "ぶどう");
  print ("$orange $apple $grape");
  • 出力結果

 りんご みかん ぶどう

  • どうやらlist()関数は、配列の中身を変数に代入する関数。
  • でもこれだけだと連想配列のサンプルがいまいちわからないんでecho()関数も参照。
  • 書式

each (配列);

  • サンプル
$fruit = array("りんご"=>123, "みかん"=>456, "ぶどう"=>789);
	print_r( each($fruit) );
  • 出力結果

Array ( [1] => 123 [value] => 123 [0] => りんご [key] => りんご )

  • echo()の説明が短すぎて分かりにくいけど、多分配列の一個目の要素について出力してるっぽい。
  • 出力結果のうち「value」と「key」は意味分かるけど「1」と「0」はなんだろ?
  • 単純に「[1]=[value」、「[0]=[key]」なのかな?
  • あとprint_rって言うのも気になったんで参照。

引数で指定された変数の情報を参照します。文字列、整数、倍精度実数を指定した場合には、その値を出力します。配列やオブジェクトを指定した場合には、キーとインデックスを示す形式で出力します。

  • 出力結果を見てみると配列のインデックスと要素を返してます。

演算子

  • このあたりはだいたいほかの言語でもいっしょなので流し読み。
  • ただひとつ「.=」という「連結して代入する」というのが気になったので以下のようなサンプルを作って走らせてみた。
  • サンプル
<?php

  $x = 10;
  $y = 20;

  $x .= $y;

  print("最終的に x= $x <br>\n");


  $a = "ABC";
  $b = "abc";

  $a .= $b;

  print("最終的に a= $a <br>\n");


  $a.=$a;

   print("aにaを連結代入すると a= $a <br>\n");


?>
  • 出力結果

 最終的に x= 1020
 最終的に a= ABCabc
 aにaを連結代入すると a= ABCabcABCabc

  • 単純に文字列として連結していくということかな。

*1:こういうネーミングを再帰的頭字語というらしい

「PHP入門」を読む その2

PHP入門←教材はここ!

文字列

  • 文字列定義には以下の方法。
    1. シングルクォーテーション「'」
    2. ダブルクォーテーション「"」
    3. ヒアドキュメント「<<< ID」
  • ヒアドキュメントってなんだっけと調べたらここ発見。思い出した。Perlとかでも使った。長い記述を代入したりに使った。
  • あとシングルとダブルの違いはここに詳細が。読んで思い出した。大切。
  • 以下がバックスラッシュ「\」でエスケープすべき文字
'
シングルコーテーション
"
ダブルコーテーション
\
バックスラッシュ
t
タブ記号
n
改行記号
$
ドル記号
r
キャリッジリターン(改行コード)
  • 「コーテーション」なのが気になる(笑)
  • 「\n」と「\r」の違いが分かるような分からんような。
  • 文字データの連結は「.」や「+」で。
  • 文字列を扱う関数の例としてstr_replace()関数が。
  • 書式

str_replace("置換対象の文字列","置換する文字列","最初の文字列");

  • サンプル
<?php
  $beginner = "初心者のためのホームページ作り";
  $replace =  "ホームページ作り";
  $scriptphp = "PHP入門";
     $word = str_replace($replace, $scriptphp, $beginner);
     print($word);
?>
  • 出力結果

 初心者のためのPHP入門

  • わかりやすい。

ループ

  • PHPでは4つのループ構文が用意されてるとのこと。
  • まず「while」文。
  • 書式

  while (式) {
  処理スクリプト
 }

  • サンプル
<?php
    $a = 0;
    $lectur = array("HTML","XHTML","XML","JavaScript","PHP");
      while($a < 4) {
        print($lectur[$a]). "&#160;\n"; //文字コード「&#160」は半角スペース
        $a++;
      }
?>

  • 出力結果

 HTML XHTML XML JavaScript

  • これとても良くあるパターン。大丈夫。
  • 次は「for」文。
  • 書式

 for (初期値式; 条件式; 増減式) {
処理スクリプト
  }

  • サンプル
<?php
    for($a = 0; $a < 4; $a++) {
    $lectur = array("HTML","XHTML","XML","JavaScript","PHP");
        print($lectur[$a]). "&#160;\n";
      }
?>
  • 出力結果

 HTML XHTML XML JavaScript

  • for文の中で配列定義してるので、外に出して試してみたけど、同じように動いた。
  • 次は「do while」文。
  • while文と条件判定するタイミングが違う。
  • 書式

 do {
処理スクリプト
  }
while(式);

  • サンプル
<?php
   $a = 0;
   $lectur = array("HTML","XHTML","XML","JavaScript","PHP");
     do {
      print($lectur[$a]). "&#160;\n";
      $a++;
     } while($a < 4);
?>
  • 出力結果

 HTML XHTML XML JavaScript  

  • これも教科書通り。大丈夫。
  • 最後が「foreach」文。なじみがない。
  • 配列用の構文らしい。

foreach構文は、PHP4 から実装された比較的新しい制御構文です。このループ制御では、指定した配列の要素を1つづつ抜き取って処理します。

  • 書式

  foreach( 配列 as $key => $value) {
処理スクリプト
  }

  • サンプル
<?php
  $a = array("Apple" => "りんご", "Orange" => "みかん", 
             "Grape" => "ぶどう");
      foreach( $a as $key => $value) {
      print("$key は、$value<br>\n");
     }
?>
  • 出力結果

 Apple は、りんご
 Orange は、みかん
 Grape は、ぶどう

  • これさっきlist()とecho()使ってやってなー。こっちのほうが簡単。
  • そして最後に「break」文。ループから抜けるやつ。
  • foreach以外で使う。
  • サンプル

<|php|


|

  • 出力結果

 HTML XHTML XML JavaScript ループを抜けます

PHP勉強始めてみました。

準備

  • PHPについてまずWEBで勉強しようとググってみる。
  • 出版系のサイトより個人サイト系が多い感じ。
  • いくつか読んで一番しっくりくるとこ見つけた。

 PHP入門

  • ここを流し読みしつつまず概要をつかんでいきたい。
  • ローカル環境でサンプルを動かしたいのでMacOS10.5でPHPを動かすようにするための作業を調べる。
  • いろいろあったけど基本に忠実なここのやり方を参照してその通り実行。
  • ただ実はこのサイトの説明はちょっとたりなくてここも参照
  • 本当にPHPが稼働しているかのテストとして以下を記述したファイルを「info.php」として保存。
<?php phpinfo(); ?>
  • そのファイルをサイトフォルダ内に置き、ブラウザ「http://localhost/~username/info.php」を開いたらPHPの情報ページが表示された。稼働確認完了。
  • 「サイト」フォルダ内にないと動かないのか良く分かんないけど、他のとこに置くとPHP作動しない模様。

速習Webデザイン ActionScript3.0を読む その11

速習Webデザイン ActionScript 3.0

速習Webデザイン ActionScript 3.0

part9 カスタムクラスの定義

    • 一週間あいだ空いての再開。
    • 一番気になってたところかも。

カスタムクラス定義の基本はプロパティ(クラス用の変数)とメソッド(クラス用の関数)の定義です。

p220 Lesson-1 キャプション

  • 01-01
    • カスタムクラス定義の内容
    1. プロパティ定義
    2. コンストラクタ定義
    3. メソッド定義
    • コンストラクタはクラスのオブジェクトを生成しオブジェクトの初期化処理を行う。

package{
  public class クラス名{
    var プロパティ名 : データ型 ; //プロパティ定義
    function クラス名(){ //コンストラクタ定義

    }

    function メソッド名 : { //メソッド定義

    }
}
}

    • パッケージはクラスを分類するためのフォルダにあたる。
    • クラス定義ファイルではトップレベルのクラス*1以外を指定する場合、あらかじめインポートしておく必要がある。

import flash.display.MoviClip; ←クラス名は完全修飾名で記述。


import flash.display.*; ←flash.displayパッケージ内のクラス全てをインポートできる。

  • 02-01 クラスの継承
    • 既存のクラスを拡張してクラス定義する手法。
    • もとになるクラスを「スーパークラス(親クラス、基本クラス)」、継承した新しいクラスを「サブクラス(子クラス、派生クラス)」と呼ぶ。
    • 既存の組み込みクラスも、自作のカスタムクラスもスーパークラスとできる。
  • 02-02 クラス継承の書式

package{
  public class サブクラス名 extends スーパークラス名{
    
    }
}

    • なかなか面倒というか分かりにくい、覚えないといけないこと多そう。
コンストラクタに関して
スーパークラスのコンストラクタが引数を必要とする場合、サブクラスのコンストラクタから明示的に実行する必要あり。サブクラスからスーパークラスのコンストラクタを呼びだすのには「super()」を使う。
埋め込みアセットクラスとクラス定義ファイルの関連づけ
埋め込みアセットクラスは「リンケージプロパティ」ダイアログの「基本クラス」のサブクラスとなる。埋め込みアセットクラスはその拡張機能をクラス定義ファイルに定義し両者を関連づけることで、定義されたプロパティやメソッドを持つデータとなる。
ドキュメントクラス
SWFファイルもMovieClipクラスのサブクラスとしてクラス定義ファイルに関連づけできる。

*1:トップレベルのクラス(コアクラス)はArray、Boolean、int、Math、Number、Object、String、unit、XML、XMLList。他の言語でも使われるような汎用性が高いクラス)。

速習Webデザイン ActionScript3.0を読む その10

速習Webデザイン ActionScript 3.0

速習Webデザイン ActionScript 3.0

part8 ビデオ/サウンド

    • キタ━━━(゚∀゚)━━━ !!
  • 01-01
    • サウンド再生はSoundクラス、停止と音量の調整はSoundChannelクラス、音量に関する調整はSoundTranceformクラスを使う。
    • もうこのあたり慣れました。クラスの生成とプロパティの割り付けなど!
    • Sound.play()メソッドを実行すると、Soundオブジェクトに関連づけられたサウンドサウンドチャンネルに割り当てられ再生を開始する、と、なんとなく分かったような分からんようないつもの感じ。
    • つまりSound.play()メソッドはサウンドの再生に割り当てたサウンドチャンネルをSoundChannelオブジェクトに返す、と。
    • RPG風に解釈するとモンスター(サウンド)を召還する人と、操作する人が別になってるイメージ?
  • 01-02
    • コントロールしたいサウンドはSoundオブジェクトと関連づけるためにアセットクラスとして設定する必要がある。←そんな気がした!
    • 単純にボタン押して音を鳴らすようにすると、音が重なってしまうのでそれを阻止する処理(p205)。なるー。
    • 音量処理では直接プロパティを書き換えず変数を挟んで処理している。(p206)
  • 01-03 外部MP3ファイルのコントロール
    • ここ一番実用的かな。課題にも出そうな感じ。
    • Soundオブジェクト作成時にダウンロード。書式は以下。

var 変数:Sound = new Sound(URLRequestオブジェクト);


引数指定しないやり方

var 変数:Sound = new Sound();
変数.load(URLRequestオブジェクト);

    • MP3はプログレッシブダウンロード再生*1が行われるのでDL完了を待たずに再生可能。
  • Let's TRY!!
    • 予想外に一時停止ボタンの実装とな!

var sndCh:SoundChannel;
var snd:Sound = new Music;
var posi:Number = 0;

play_btn.addEventListener(MouseEvent.CLICK, xPlayClick);
stop_btn.addEventListener(MouseEvent.CLICK, xStopClick);
pause_btn.addEventListener(MouseEvent.CLICK, xPauseClick);
  function xPlayClick(evt:Event):void{
    if(sndCh==null){
      sndCh = snd.play(posi,1000);
    }
  }

  function xStopClick(evt:Event):void{
    if(sndCh != null){
      sndCh.stop();
      posi = 0;
      sndCh = null;
    }
  }

  function xPauseClick(evt:Event):void{
    if(sndCh != null){
      posi = sndCh.position;
      sndCh.stop();
      sndCh = null;
    }
  }

try_08-01_01.fla

    • 始めに再生と停止ボタンだけ実装して動作確認してからヒントを参考にポーズボタンも実装。
    • 最初ポーズの方に「sndCh = null;」やり忘れてて、ポーズボタンを押したら再生が行われない状態になってた。
    • そこに気付いたらちゃんと動きました。
    • そういえばCS4になってサウンド周りが変更されたのか、アセットクラスに設定する画面がテキストと違ってた。

part8 ビデオ/サウンド のつづき

  • 02-01 FlashとFLVPlaybackコンポーネント
    • Flashとビデオと言えば埋め込みよりも外部FLV。
    • テキストp212,213にならって実際にFLVPlaybackコンポーネントを使って外部ビデオの読み込みをやってみる。ものすごく簡単にできてびっくり。
    • skinパラメータで設定したコントローラーは別SWFとして書き出される、と書いてあったけど実際に「SkinOverPlayStopSeekMuteVol.swf」が生成されていた。
    • 実際WEBページで使う場合はこのコントローラーSWFもサーバにあえておく必要がある。

*1:ストリーミング再生と似てるけどちょい違うらしい

速習Webデザイン ActionScript3.0を読む その9

速習Webデザイン ActionScript 3.0

速習Webデザイン ActionScript 3.0

part7 外部ファイルの読み込み のつづき

  • 02-01 XMLファイルの読み込み
    • 引き続き超実践的!!!
    • XMLファイルの読み込みにはURLLoaderクラスを使う。
    • URLLoaderクラスはXMLファイルをテキストデータとして読み込みURLLoaderオブジェクトのdataプロパティに格納される。
    • dataプロパティを取得できるのはファイルのダウンロード終了後であり非同期処理が必要*1
    • スクリプト例は以下。

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE,xComplete);
xmlLoader.load(new URLRequest("sample.xml") );
function xComplete(evt:Event):void{
  trace(xmlLoader.data);
  }

p191

    • Flash Playerは外部ファイルを読み込む時、デフォルトでは文字コードUnicode(UTF-8)として解釈する。
    • 文字コードがらみはちゃんと覚えておかないとドツボにはまりそう。。。
    • 「System.useCodePage = true;」とすることでテキストファイルをOSの通常コードとして解釈させることが出来る。
  • 02-02
    • XMLファイルをテキストデータとして読み込んだらXMLクラスやXMLListクラスを使って効率よく管理することが出来る。
    • XMLテキストは次の書式でXMLオブジェクトに変換できる。

var 変数 :XML = new XML(XMLテキスト);

    • XMLオブジェクトは単一のノードの情報を管理できる。
    • 子ノードは「XMLオブジェクト.ノード名」で抽出でき、複数ある場合はXMLListオブジェクトとして扱われる。
    • XMLListオブジェクトはArrayオブジェクト同様forステートメントの利用で一括処理できる。
    • for each ・・・ inステートメントを使うとXMLListオブジェクトが保持するXMLオブジェクトの数だけ繰り返し処理を行い変数にXMLList内のオブジェクトが代入されていく。

for each(変数 in XMLListオブジェクト)[(条件)]{
  処理
}

    • 「(条件)」で条件抽出も可能
  • 02-04
    • ポストカードカタログ制作サンプルもXML仕様に改造。
    • XML処理は独立性が高いため、今までの処理を第2フレームに移し、第1フレームにXML処理を記述と。なるー。
    • このとき、読み込みが終了する前にフレームが進んでしまわないようにstop()をかけておく。なるー。
  • Let's TRY!!
    • ブログチックなXMLFlash上に書き出す課題。

var blogXml:URLLoader = new URLLoader();
blogXml.addEventListener(Event.COMPLETE, xComplete);
blogXml.load(new URLRequest("try.xml"));
function xComplete(evt:Event):void{
  var tempXml:XML = new XML(blogXml.data);
  var subNode:XMLList =tempXml.diary;
  subject_txt.text = subNode[0].@subject;
  date_txt.text = subNode[0].@date;
  content_txt.text = subNode[0].toString();
}

try_07-02_00.fla

    • 最後の行を「content_txt.text = subNode[0].diary.toString();」としてて本文だけ書き出されなかったけど、よく考えたらtempXmlにはdiaryタグまんまが代入されているので「.diary」は必要ありませんね。
    • 属性値には必要なく、ノードの値には「toString」が必要というのが忘れちゃいそう。
    • この課題のページ(p200)には2カ所も誤植が!!!!

*1:画像読み込みの時は読み込み完了用のイベントハンドラをLoaderオブジェクトのcontentLoaderInfoプロパティに設定したが、XMLファイルの読み込み完了用イベントハンドラはLoaderオブジェクトに直接設定できる。とのこと。