info

Home
[Papervision3D]3Dオブジェクトにalphaプロパティを追加  @ FlashAS3 , Papervision3D 2008年6月25日

Papervision3DでFlashを制作しているとき、ふと気付いたのですが
3Dオブジェクトにalphaプロパティが無くて「透明→不透明」の演出が出来ないのです。
「MovieMaterial」でやることも出来ますが処理が重いのでNG
そこでPapervision3Dをちょこっといじってみました。いまのところ「BitmapMaterial」かつ「Plane」の
3Dオブジェクトだけつくりました。
下記のコードを追加すれば「alpha」プロパティが追加されて
不透明度を操作することが出来ます。しかも軽い!
ただ、BitmapDataのクローンを作成するので少しリソース食います
でかい画像をテクスチャにするときは使えないかもです。

ファイル名:Plane.as

public var cmf=new ColorMatrixFilter([1,0,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]);
private var _alpha:Number=1;
public function reset_alpha(){
	cmf=new ColorMatrixFilter([1,0,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, _alpha, 0]);
	this.material.texture.applyFilter(this.material.bmpd, this.material.bmpd.rect, new Point(0, 0), cmf);
}
public function set alpha(v:Number):void{
	if(!this.visible)return;
	_alpha=((v<0)?0:v);
	cmf=new ColorMatrixFilter([1,0,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, _alpha, 0]);
	this.material.texture.applyFilter(this.material.bmpd, this.material.bmpd.rect, new Point(0, 0), cmf);
}
public function get alpha(){
	return _alpha;
}
public function dipose_bmpd(){
	this.material.bmpd.dispose();
}

ファイル名:BitmapMaterial.as

変数を宣言
public var bmpd:BitmapData;

コンストラクタの該当部分を下記のようにする
if( asset ){
	texture = asset;
	this.bmpd=asset.clone();
}
[ヘンリー・フォード]  @ 気になった 2008年6月15日

ヘンリー・フォード(Henry Ford, 1863年7月30日 – 1947年4月7日)はアメリカ合衆国出身の企業家、自動車会社フォード・モーターの創設者である。
工業製品の製造における大量生産の方式を開発し、自動車が大衆に普及させるのに多大な貢献をなした。

カール・ベンツが自動車の産みの親であるなら、自動車の育ての親はヘンリー・フォードとなる。T型フォードは、世界で累計1500万台以上も生産された。この生産台数を可能にしたのは流れ作業による大量生産技術であり、これにより、販売価格を低く抑えながらも販売数量を拡大することにより企業利益を確保するという考え方を実現できるシステムを構築した。1908年の発売当時、富裕層相手の手作りの自動車が3000 ドルから4000ドル、同クラスの他メーカーの自動車でも1000ドル近い価格であったのに対し、T型フォードは850ドルの低価格であった。この大量生産方式は他の工業生産にも応用され、20世紀の工業社会を可能にした。

因みにトーマス・アルヴァ・エジソンとは、友人であった。フォードは1967年、エジソンは1969年に、それぞれ自動車殿堂入りをしている。
(Wikipediaより抜粋)

[wmode][ExternalInterface]wmode:opaqueでポップアップブロック  @ FlashAS3 , FlashAS3 Tips 2008年6月1日

swfファイルをhtmlへ貼り付けるとき、
wmodeを設定しないと(デフォルト値だと)ブラウザ上で再生速度が遅くなります。
これを解決する方法としてwmodeをopaqueにするとよいですが、
IEで「navigateToURL」を使って新規ウィンドウに
リンクを開くとポップアップブロックにかかります。サンプルページ
そこで「ExternalInterface」を使用すればこの問題を解決することができます。
FlashCS3のヘルプには

ExternalInterface クラスは外部 API であり、ActionScript と Flash Player のコンテナとの間で
直接通信できるようにするアプリケーションプログラミングインターフェイスです。

と書かれています。よくわかりませんが、JavaScriptの関数とか実行できるということみたいです。
これをリンクを開くときに使うには下記のようなasファイルを用意して
ボタンがクリックされたときに「getURLex」にURLを渡して実行してやればよいです。
wmodeには他にも問題がありますがそれはまた次の機会に。

ファイル名 : getURL.as
package {
	import flash.net.navigateToURL;
	import flash.net.URLRequest;
	public function getURL(url, window="_blank"){
		navigateToURL(new URLRequest(url), window);
	}
}

ファイル名 : getURLex.as
package{
import flash.external.ExternalInterface;
public function getURLex(url, window="_blank"){
	if(ExternalInterface.available){
	var str="";
	try{
		str=ExternalInterface.call("function(){return navigator.userAgent;}").toString();
	}catch(e){
		str="failed";
	}
	if(str=="failed" || str.indexOf("Safari")>-1 || str.indexOf("Opera")>-1){
		getURL(url);
	}else{
		try{
			ExternalInterface.call("function(){window.open('"+url+"', '"+window+"'); void(0);}");
		}catch(e){
			getURL(url);
		}
	}
	}else{
		getURL(url);
	}
}
}
[OECD]  @ 気になった 2008年5月19日

経済協力開発機構(けいざいきょうりょくかいはつきこう、英:Organization for Economic Co-operation and Development、略称OECD)はヨーロッパ北米等の先進国によって、国際経済全般について協議することを目的とした国際機関。本部はパリに置かれ、公用語は英語とフランス語。市場経済を原則とする先進国によって構成されているため、「先進国クラブ」 あるいは「金持ちクラブ」 とも呼ばれている。

以下の3つを目的としている(OECD条約第1条)。
・経済成長:出来る限りの経済成長、雇用の増大、生活水準の向上を図ること
・開発:経済発展途上にある諸地域の経済の健全な拡大に寄与すること
・貿易:多目的かつ無差別な世界貿易の拡大に寄与すること
(Wikipediaより抜粋)

「_global」はどこへいった  @ FlashAS3 , FlashAS3 Tips 2008年5月18日

無くなったようです。
グローバルメソッドを作るときはasファイルで定義してやればいいみたいです。
こんな感じで
ファイル名:set_release.as

package{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.display.SimpleButton;
	public function set_release(mc, func){
		mc.addEventListener(MouseEvent.MOUSE_UP, func);
	}
}
[ECMAScript]  @ FlashAS3 2008年5月18日

ECMAScript(えくますくりぷと)はEcma Internationalによって策定されたスクリプト言語である。互換性の低いJavaScriptJScriptを標準化すべく、両方の言語に共通する部分を取り入れて作られた。現在の最新バージョンは3 (3rd edition)。1999年12月に標準化。関連規格の一つであるECMAScript for XML(E4X)では、ネイティブでXMLがサポートされている。

ECMAScript4
現在、ECMAScript 4 の仕様作成が進められている。 型に関する機能が増え、大規模・大人数開発のための機能が増えている。 単純なプログラムから、より巨大で信頼性の高い大規模プログラムへの「進化的プログラミング」のための機能を提供する。 ECMAScript 3 とは、少々、下位互換性がない。 ActionScript 3 の、おおかた上位互換であるが、これも、一部、互換性がない。
http://www.ecmascript.org/docs.php – 最新の仕様
(Wikipediaより抜粋)