2009/11/04
[FumioNonaka.com Newsletter: no.071]
//=========================================================================
// [FumioNonaka.com Newsletter]
//
var issue:uint = 71; // 第71号
var published:Date = new Date(2009, 11, 5); // November 5, 2009
//=========================================================================
var index:Object = {
No_0:打率と打席数,
No_1:10月の新ネタ,
No_2:書きもの,
No_3:セミナー,
No_4:よろず新情報,
No_5:スクリプト覚え書き
}; //_____________________________________________________________________
/*
■PR: 共著『ActionScript 3.0辞典 [FlashPlayer 10/9対応]』11月16日発売!
(伊藤 のりゆき/大重 美幸/野中 文雄/植木 友浩/林 拓也 著)
http://www.fumiononaka.com/Books/ActionScript3Refernce.html
【No_0:打率と打席数】======================================================
たいそう優秀な営業の経歴をもたれた方が、電話セールスの解説をされていました。
ただ、私にはどうもピントがずれているように感じられます。
All About(09/08/26)「テレアポを楽しいスパイラルに乗せるには?」:
http://allabout.co.jp/career/careersales/closeup/CU20080826A/
「30件電話をして、アポイントが取れるのはせいぜい1件ぐらい。ひどいときには
100件電話をかけても、1件もとれないことがあります。」
私にも経験があります。まさに、そのとおりです。しかし、そこから以下の方向に
進むことが果たして正しいのか、ということです。
「こうした事態を避けるために大切なのは、アポイントが取れる打率を上げること。」
1/30の打率が倍になったとしても1/15です。それでどれだけ気持ちが前向きになる
でしょうか。しかも現実問題として、打率を2倍にするというのは並大抵のことでは
ありません。
「『なんか変な電話がかかってきっちゃったよ。できれば早く電話を切りたいな』
この『早く電話を切りたいな』という思いを、『もう少し話を聞いてみようかな』、
『会ってみようかな』という思いにさせるには、お客さんの心にササるキーワード
を、営業マンが発せられるかどうかがカギを握ります。」
どんなに素晴らしいキーワードを発してみても、お客さんは必要のないものは買い
ません。おそらく、30人のうち28人は要らないから電話を切るのであって、説明の
巧拙は関係ない気がします。
では、キーワードなるものを駆使し、あれこれ説明して、2/30の打率を目指すべき
でしょうか。もちろん、説明の仕方を工夫する必要はあります。けれども、打率は
そう画期的に上がるものとは思えません。そうであればむしろ、時間効率を上げる
方がよほど有効ではないでしょうか。つまり、買う気のない人と会話する時間を、
最小限にするのです。
営業の電話を受けて不快に感じるのは、用件をなかなか切出さない人です。「○○
はご存じですか?」とか「○○を利用されていますか?」などと、自らの用向きを
隠して質問してきます。
わざわざ不信感を募らせて、お互いに不愉快になるより、初めにはっきりと用件を
伝える方がよほど賢明です。つまり、どういう特長のあるこんな商品を紹介したい、
と明言してしまいます。要らないといわれたら、食い下がっても時間の無駄です。
さっさと切上げた方が、何よりお互いの精神衛生上よいといえます。
そうして、興味を示してくれた人にだけ、キーワードなり何なりを使って具体的な
説明をすれば、打率は代わり映えしなくとも、時間効率は上がります。そうすると、
打席数が増やせます。野球の素人がヒットを10本打とうとするなら、打率を上げる
よりは、打席数を増やす方が、おそらくずっと簡単ではないでしょうか。
【No_1:10月の新ネタ】======================================================
[スクリプティング新規情報]
■FN0910001「Transformクラスのオブジェクトへのアクセス」
http://www.fumiononaka.com/TechNotes/Flash/FN0910001.html
DisplayObject.transformプロパティから参照できるTransformオブジェクトには、
座標空間を扱うプロパティとして、Transform.matrixやTransform.matrix3Dのほか
Transform.perspectiveProjectionがあります。これらのプロパティから参照される
オブジェクトの操作の仕方は、少しずつ異なります。
【No_2:書きもの】==========================================================
[gihyo.jp]
■連載「ActionScript 3.0で始めるオブジェクト指向スクリプティング」
・第27回「XMLデータを扱う」
http://gihyo.jp/dev/serial/01/as3/0027
XMLデータは、外部ファイルとしてもよく用いられます。ActionScript 3.0における
XMLの仕様は,「ECMAScript for XML(E4X)」に準拠します。
[F-site: ActionScript: AS3]
■TextAreaコンポーネントのテキストを選択できなくする
http://f-site.org/articles/2009/10/31090841.html
TextAreaコンポーネントには選択の可否をコントロールするプロパティが見当たり
ません。そのため、TextArea.textFieldプロパティで、コンポーネントの中にある
TextFieldインスタンスを操作しなければならなそうです。
[JActionScripters](英語blog)
■Three types of transformation objects in the Transform class
http://blog.jactionscripters.com/2009/10/14/three-types-of-transformation-objects-in-the-transform-class/
前掲TechNote「Transformクラスのオブジェクトへのアクセス」の英語版解説です。
【No_3:セミナー】==========================================================
[JaGra PROFESSIONAL DTP & WEB SCHOOL]
■ActionScript 3.0で学ぶ座標と3次元空間の数学講座
http://www.jagra.or.jp/school/web/actionscript3_math.html
スクリプトによるアニメーションでは、数学や物理学の知識を必要とされることが
たびたびあります。そんなとき、すぐに公式を探す人が少なくありません。けれど
必ずしも都合のいい公式は見つからないでしょう。それに、単純に公式を適用した
だけで、意図した動きになるとはかぎらないのです。
たとえば、アニメーターも、現実の世界の動きをそのまま描く訳ではありません。
デフォルメすることにより「らしさ」を表現することもあります。数学や物理学の
方程式も同じことです。単純に公式を当てはめるだけでなく、その原理や考え方を
理解して、応用する必要があるのです。
この講座は、アニメーションを扱ううえで重要な座標空間に関わる、数学の基礎を
学習します。とくに後半は、高校文系の数学の知識では理解しにくい行列とMatrix
およびMatrix3Dクラスについて解説します。スクリプティングより、数学的な説明
が中心です。
スクリプトは、ActionScript 3.0を使い、イベントリスナーの扱いを理解している
ことが前提となります。数学の知識については、高校文系レベルとします。
【日 時】2009年11月16日月曜日6時間
【参加費用】21,000円
【場 所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0プロフェッショナルガイド』
■基礎から学ぶActionScript 3.0 〜ステップ1
http://www.jagra.or.jp/school/web/actionscript3_step1.html
簡単なスクリプトは書いたことがある、という初学者を対象とした基礎講座です。
スクリプトによるアニメーションを題材にして、ActionScript 3.0の基本と処理の
組立て方・考え方を解説します。おもな学習項目としては、変数と関数、イベント
リスナー、および日付と文字の扱いなどが含まれます。ActionScript 2.0の知識は
前提とはしません。
【日 時】2009年12月3日木曜日6時間
【参加費用】21,000円
【場 所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0プロフェッショナルガイド』
■基礎から学ぶActionScript 3.0 〜ステップ2
http://www.jagra.or.jp/school/web/actionscript3_step2.html
ActionScript 3.0の基礎の学習を終えた初級者が対象です。MovieClipインスタンス
をインタラクティブにアニメーションさせるムービーを作成しながら、座標と座標
空間の扱い、条件判定、配列やObjectの操作などについて学びます。関数を基本に
すえた処理のパーツ化についても、実習をとおして理解していただきます
【日 時】2009年12月4日金曜日6時間
【参加費用】21,000円
【場 所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0プロフェッショナルガイド』
[ROKUNANA WORKSHOP OF MEDIA DESIGN]
■Flash CS4 3D講座
http://67.org/ws/workshop/detail/071as.html
Flash CS4 Professionalには、3次元空間の表現力が加わりました。ActionScript
3.0にも、Flash Player 10のこれらの機能を実現するクラスやメソッドが備わって
います。本講座では、3つのクラスとひとつのメソッドをご紹介します。
・Matrix3Dクラス
・Vecotor3Dクラス
・Vecotorクラス
・Graphics.drawTriangles()メソッド
第1のMatrix3Dクラスはインスタンスに3次元座標変換を加えます。第2のVecotor3D
クラスは3次元空間の座標を操作します。第3のVecotorクラスは、直接3次元空間に
関わらないものの、座標その他の複数の値を最適化して扱います。第4のGraphics.
drawTriangles()メソッドは、ビットマップを複数の三角形に分けてマッピングし、
3次元を表現するために用いられます。
これらのクラスやメソッドの使い方と、3次元座標空間の考え方について、サンプル
スクリプトを示しつつ解説します。また、ベクトルや行列などの数学的な基礎にも
触れます。
【日 時】2009年11月13日金曜日6時間
【参加費用】29,800円
【場 所】株式会社ロクナナ
【募集人数】6名
■数学的思考で取り組むActionScript中級講座
http://67.org/ws/workshop/detail/072as.html
スクリプティングには、数学的思考が必要だといわれます。そのとき誤解されがち
なことは、公式を探したり覚えたりして、それをスクリプトに当てはめればよいと
思い込むことです。話はそれほど安直ではありません。けれども、シンプルです。
大切なのは、基本的な仕組みを知って、論理的に考えることです。やみくもに調べ
たり、暗記したりするよりも、まず理解することが必要なのです。この講座では、
数学の公式も紹介しながら、論理的なスクリプトの組立て方を、実習で学んでいき
ます。
数学の知識については、高校文系程度で構いません。スクリプトは、ActionScript
3.0を使い、イベントリスナーの扱いや条件判定を理解していることが前提です。
【日 時】2009年12月12日土曜日6時間
【参加費用】29,800円
【場 所】株式会社ロクナナ
【募集人数】6名
【No_4:よろず新情報】======================================================
[FLASH-Japanネタ]<http://www.flash-jp.com/>
■コンパイルエラー「1023:オーバーライドできません」について
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9055&forum=20
サブクラスでオーバーライド(再定義)できるのは、スーパークラスのメソッドのみ
です。プロパティは、アクセサメソッドで定義されてる場合以外、オーバーライド
できません。
■addChild()にて表示リストに追加したmcを入れ替えたい。
【removeChild();が効きません。】
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9084&forum=6
親DisplayObjectContainerインスタンスが子のDisplayObjectインスタンスをもつか
どうかを調べるためには、DisplayObjectContainer.numChildrenプロパティまたは
DisplayObjectContainer.contains()メソッドが使えます。
■AS3.0の配列アクセス演算子の仕様について
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9085&forum=20
変数を動的に定義しようとすると、その宣言とアクセス方法について考えなければ
なりません。
【No_5:スクリプト覚え書き】================================================
■Dictionaryクラスを使ったサンプル
Dictionaryクラスは、独自のメソッドとしてコンストラクタしか備えていません。
クラスの説明を読んでも、使い方はもちろん、その意味さえわかりにくいようです。
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/utils/Dictionary.html
Dictionaryインスタンスの使い途は基本的に配列やObjectインスタンスと同じで、
複数の値を納める容れ物になります。ただ、値にアクセスしたいとき、配列は整数
インデックス、Objectインスタンスが文字列の識別子を用います。それに対して、
Dictionaryインスタンスは、オブジェクトの参照そのものをキーとして指定できる
のです。
簡単なフレームアクションを、サンプルとして書きました。3つの青い矩形のSprite
インスタンスをタイムラインに配置し、それらをクリックすると、それぞれ異なる
フィルタが適用されます。
var nColor:uint = 0x0000FF; // 塗り色青
var sizePoint:Point = new Point(100,25); // インスタンスの大きさ100×25 px
// Dictionaryインスタンスの生成
var myDictionary:Dictionary = new Dictionary(); var mySprite:Sprite;
// Dictionaryインスタンスにフィルタオブジェクトを設定
mySprite = createSprite(10,10);
myDictionary[mySprite] = new BevelFilter();
mySprite = createSprite(10,50);
myDictionary[mySprite] = new BlurFilter();
mySprite = createSprite(10,90);
myDictionary[mySprite] = new GlowFilter();
mySprite = null;
// 指定された位置に矩形のSpriteを配置
function createSprite(nX:Number, nY:Number):Sprite {
var mySprite:Sprite = new Sprite();
var myGraphics:Graphics = mySprite.graphics;
addChild(mySprite);
mySprite.addEventListener(MouseEvent.CLICK, applyFilter);
myGraphics.beginFill(nColor);
myGraphics.drawRect(0, 0, sizePoint.x, sizePoint.y);
mySprite.x = nX;
mySprite.y = nY;
return mySprite;
}
// Dictionaryインスタンスに設定されたフィルタを適用
function applyFilter(eventObject:MouseEvent):void {
var mySprite:Sprite = eventObject.currentTarget as Sprite;
mySprite.filters = [myDictionary[mySprite]];
mySprite.removeEventListener(MouseEvent.CLICK, applyFilter);
}
とくに動的に生成したインスタンスには、デフォルトではインスタンス名がなく、
[出力]しても区別できません。上記のサンプルスクリプトでは、変数に代入された
Spriteインスタンスの参照も破棄しています。
参考: F-site「MovieClipインスタンスとインスタンス名」
http://f-site.org/articles/2008/04/19014939.html
しかし、Dictionaryインスタンスに対して、各Spriteインスタンスの参照をキーと
してフィルタオブジェクトを納めています。そして、クリックしたときのイベント
オブジェクトから対象のインスタンスを調べ、Dictionaryインスタンスからそれを
キーとするフィルタオブジェクトを取出し、Spriteインスタンスに設定しています。
なお、サンプルのクラスをwonderflに投稿しました。wonderflを使ったスクリプト
解説書は、もうすぐ共著で出版する予定です。
http://wonderfl.net/code/2a311e344f83dd09b4afd08010669b42cd39cc7b
*/
//=========================================================================
var publisher:Object = {
name:野中 文雄,
mailto:fumio@mx10.ttcn.ne.jp,
web:<http://www.FumioNonaka.com>,
credit:2003-2009 (c) Fumio Nonaka all rights reserved.
}; //_____________________________________________________________________
if (wantToUnsubscribe) { // メールマガジンの購読中止は
// つぎのURLでお手続きください
var url:String = "http://www.FumioNonaka.com/Magazine/";
var request:URLRequest = new URLRequest(url);
navigateToURL(request);
}



