メイン

正誤データ(4版) アーカイブ

2008年5月21日

p045

変数theNameに値が入っていない場合だけを考慮していて、値が空白の場合を処理していませんでした。やっぱ、空白の場合もマズイですよね。

p.45 2つ目のスクリプト例 3行目のif文
訂正前:
if (myname != null) {

訂正後:
if ((myname != null)&&(myname != "")) {

2008年9月16日

p.167

importするパッケージのベースパスとなるクラスパスの設定は各Flashムービーのパブリッシュ設定のFlashパネルのActionScriptのバージョン設定にもあるので、補足しておきます。

p.167 本文6行目
誤:ベースパスは環境設定の
正:ベースパスは環境設定およびパブリッシュ設定の

p.168

ムービーにドキュメントクラスを指定している場合には、フレームアクションでもコアクラス以外のクラスをimportしなければならないので、このことを補足しておきます。

追加原稿:
ただし、ドキュメントクラスを指定した場合には、フレームアクションでもコアクラス以外のクラスをimportしなければなりません。

p185 - p.187

え〜、AS3で仕様が変更になっておりました。
訂正の報告が遅くなってすみませんでした。m(_ _)m

AS3では、同じパッケージ内(フォルダ内)にあるクラスファイル同士は互いにimportせずともアクセスできます。それがinternalというメンバー属性です。

削除:p.186の本文7行と1番目のスクリプトまで


この部分の記述を削除することから1ページの空きができるので、5刷以降では次の内容を追加原稿として差し込むことにしました。
これにともない、内容が被ってしまうp.187の右コラムのNoteを削除します。


追加原稿:
クラスパスの設定とパッケージ
Flashがクラスのパッケージを検索開始するクラスパスは、ファイルメニューの[環境設定...]のActionScriptパネルの[言語:ActionScript 3.0設定]で設定します。あるいは、パブリッシュ設定のFlashパネルのActionScriptバージョンからActionScript 3.0を選び、その設定パネルのクラスパスの設定でファイルごとにクラスパスを指定することができます。
クラスパスの指定では、パブリッシュするFlashファイルからの相対パスを利用できます。ファイルメニューの[環境設定...]を見るとのカレントフォルダを示す「.」が指定してあるのがわかります。

p185add1.jpg
図:ファイルメニューの[環境設定...]のクラスパス設定。

相対パスを使えることから、Flashファイルが「myTest/sample/ball/test_ball.fla」にあり、クラス定義ファイルが「myTest/src/com/oshige/Ball.as」にあったとき、test_ball.flaのパブリッシュ設定で「../../src」をクラスパスに設定すればimport com.oshige.BallでBallクラスを使えるようになります。
このとき、Ballクラス定義ではpackage com.oshigeのようにパッケージを指定します。クラスパス設定でsrcフォルダ以下を指定することで、Ballクラスのパッケージ指定を変更せずにクラスファイルを使うことができます。

p185add2.jpg
図:パブリッシュ設定で「../../src」をクラスパスに設定すれば、srcフォルダ以下がパッケージになります。

p.193

最後の1文を次のように補足します。

誤:staticはクラスメンバーかどうかを示す属性なので、アクセス制限の属性と重ね合わせて設定できます。
正:static、overrideは、アクセス制限の属性と重ね合わせて設定します。

また、以下のメンバー属性についても説明を追加補足します。

メンバー属性表の定義の説明
internal --- 同じパッケージ内およびサブクラスから参照できるメンバー。
private --- クラス内でのみ参照できるメンバー。サブクラスからも参照できない。オーバーライドできない。
override --- オーバーライドを行うメンバー。

p.201〜202

スーパークラスのクラスメンバーを利用する場合の注意についての説明のポイントがずれていたのでリライトしました。(書いていたときは何か混乱していたのかなあ・・・)

本文差し替え:
クラス継承すると、サブクラスのスクリプトからスーパークラスのクラスメンバーとインスタンスメンバーを利用できるようになります。ただし、クラスメンバーについてはそれはサブクラスのクラス定義スクリプトでの利用に限られます。
たとえば、スーパークラスMyClassAにクラスメンバーとして変数a、メソッドtestA()が定義してあるとき、サブクラスのMyClassBに対してMyClassB.aあるいはMyClassB.testA()を実行した場合を試してみましょう。

# MyClassA.asとMyClassB.asのスクリプトはそのままです。

p.202 下から5行目の2行とスクリプト。(2番目のパラグラフ)
本文とスクリプト差し替え:

MyClassBはMyClassAを継承していることから、MyClassBのクラスメンバーを参照する場合と同じようにMyClassAのクラスメンバーを利用できるように思えます。しかし、MyClassBからMyClassAのクラスメンバーを呼び出すと未定義エラーになります。

//未定義エラーになる。
MyClassB.classMethod();
trace(MyClassB.classProp);

4刷り正誤について

本書の発売から1年が経過しまして、たくさん読んでいただき感謝しております。
皆様のおかげで、今回、5刷りを行うことになりましたが、4刷りまでにほぼ直したつもりが、セミナー等で使用しているうちに「ここは直しておいた方がいいかなあ・・・」と無視できない箇所がまだまだ出てきました。本当に申し訳ありません。長年ライターをやっている者として恥ずかしいです。

ときどき読者の方にお会いすることがあり、お叱りどころか恐縮するぐらい感謝されることがあります。お役に立てていてうれしい限りです。
もし、完全改訂するチャンスがあるときは、この1年余りでわかってきたことなどを注意深く検討し、より初心者のためにわかりやすいサンプルと構成に直したいと思います。
今後ともよろしくお願いします。

大重美幸

About 正誤データ(4版)

ブログ「ActionScript3.0入門ノート」のカテゴリ「正誤データ(4版)」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリは正誤データ(3版)です。

次のカテゴリは正誤データ(5版)です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。