articles

2009 年 6 月 30 日

AS3 LoaderInfoのプロパティ

LoaderInfo → EventDispatcher → Object
なので、すべての表示オブジェクトはLoaderinfoがつかえる?
今回調べたかったのは

for (i=1; i>=girls_num; i++) {
	var loader=new Loader();
	loader.load(new URLRequest(i+".png"));
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderCompleteHandler);
}

function loaderCompleteHandler(event){
	trace("読み込み完了");
	var loader_obj=event.currentTarget.loader;
}

という形で、この LoaderInfo オブジェクトに関係した Loader オブジェクトを取得したかったので
LoaderInfoのプロパティloaderを使いました。
紛らわしい。
調べる事が多くなると思うので、livedocsの内容をまるまる移しておきます。

【転用】
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/display/LoaderInfo.html

actionScriptVersion : uint [read-only] ロード済みの SWF ファイルの ActionScript バージョンです。
applicationDomain : ApplicationDomain [read-only] 外部 SWF ファイルがロードされると、ロードされたクラスに含まれているすべての ActionScript 3.0 定義は applicationDomain プロパティに格納されます。
bytes : ByteArray [read-only] LoaderInfo オブジェクトに関連付けられているバイト数です。
bytesLoaded : uint [read-only] そのメディアのロード済みのバイト数です。
bytesTotal : uint [read-only] メディアファイル全体の圧縮後のバイト数です。
childAllowsParent : Boolean [read-only] コンテンツ (子) からロードする側 (親) への信頼関係を表します。
content : DisplayObject [read-only] この LoaderInfo オブジェクトに関係したロードされたオブジェクトです。
contentType : String [read-only] ロードされたファイルの MIME タイプです。
frameRate : Number [read-only] ロード済みの SWF ファイルに関する 1 秒ごとのフレーム数を表す公称のフレームレートです。
height : int [read-only] ロードされたファイルの規格高さです。
loader : Loader [read-only] この LoaderInfo オブジェクトに関係した Loader オブジェクトです。
loaderURL : String [read-only] この LoaderInfo オブジェクトによって記述されるメディアのロードを開始した SWF ファイルの URL です。
parameters : Object [read-only] ロード済みの SWF ファイルに提供されるパラメータを表す、名前と値の組を含んだオブジェクトです。
parentAllowsChild : Boolean [read-only] ロードする側 (親) からコンテンツ (子) への信頼関係を表します。
sameDomain : Boolean [read-only] ロードする側とそのコンテンツの間のドメインの関係を次のように表します。ドメインが同じ場合は true、異なる場合は false です。
sharedEvents : EventDispatcher [read-only] セキュリティ境界を越えてイベントを交換するために使用される EventDispatcher インスタンスです。
swfVersion : uint [read-only] ロード済みの SWF ファイルのファイル形式のバージョンです。
url : String [read-only] ロードされるメディアの URL です。
width : int [read-only] ロードされたコンテンツの規格幅です。

2009 年 6 月 28 日

サイドバーを増やす

CATEGORYWordPress  TAG 2:21 AM

なんだかよくわかりませんが、ドキュメントを見て
functionに以下を追加しました。

register_sidebars(2, array('name'=>'sidebar %d'));

管理ページのウィジェットには追加されたんですが・・・
続きます。

2009 年 6 月 27 日

AS3 Loaderで読み込んだswfにアクセスする2

CATEGORYactionscriptLoader  7:53 PM

前回の続きです。

//loaderに読み込む
var loader=new Loader();
loader.load("test.swf");

//Object型の変数に格納
loaderRoot:Object= loader;
loaderRoot.content.gotoAndPlay("ラベル");

//このとき、test.swfをas2でパブリッシュしていると
loaderRoot.contenがAVM1Movieとなり、上手く動きません。

as3で読み込み元から制御する場合、読み込むswfもas3の必要があるようです。
ちなみに上記でいうと、loaderRoot.contentはMovieClipとなっていました。

2009 年 6 月 27 日

Papervision3D 円柱(Cylinder)にテクスチャを貼り中からのぞく

// PV3Dライブラリをインポート
import org.papervision3d.view.*
import org.papervision3d.materials.*
import org.papervision3d.objects.primitives.*

// 3Dの初期設定をおこないます
var world:BasicView = new BasicView()
world.startRendering()
addChild(world)

// マテリアルを作成します
// ビットマップアセットマテリアルは引数にライブラリの画像を指定します
var material:BitmapAssetMaterial = new BitmapAssetMaterial('EarthMap')
//両面に貼付ける
material.doubleSided = true;


// Cylinderを作成します
//new Cylinder(material, radius, height, segmentsW, segmentsH, 上部半径);
var obj = new Cylinder(material, 368, 500, 16, 6, -1);

// 3D空間にオブジェクトを追加します
world.scene.addChild(obj)

// Cylinderを回転させます
addEventListener(Event.ENTER_FRAME, function(e){
     obj.rotationY += 0.5
})

//カメラを原点にもってくる
world.camera.y=0;
world.camera.z=0;

参考
http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_3/

テクスチャ素材
Planet Earth Texture Maps

2009 年 6 月 24 日

AS3 flashvarsとGET

CATEGORYactionscript  TAG 6:33 PM

最近swfobjectはよく使うのですが、肝心のasでのflashvarsの受け取りを
忘れがちですのでメモします。

var paramObj:Object = LoaderInfo.parameters;
trace( paramObj["sample"] );

GET値を取得する方法は

var paramObj:Object = LoaderInfo.parameters; 
trace( paramObj["sample"] );

まてまてまてい!
一緒ですか。

パラメータの違う同じファイルを、javascriptで生成するサンプルを
作ってたのですがリクエスト読み込む数だけ発生していました。
(flashvars、GET両方)

結局どっち使ってもいいんですね。

2009 年 6 月 22 日

swfobjectのあるある

CATEGORYjavascriptswfobject  TAG 6:58 PM

swfobjectを最近よくつかうので、
ありがちな書き方をメモします。
もっと簡略化できるのもありました。それは後日。

こういうのもあります。

 var att = { data:"swf/player_s.swf?path="+id, width:"225", height:"144" };
 var par = { menu:"false" };
 var id = 'flash-container'+id;
 var mainFlash = swfobject.createSWF(att, par, id);

2009 年 6 月 22 日

AS3 FLVPlaybackのプロパティ

CATEGORYactionscriptFLVPlayback  6:45 PM

FLVPlaybackを用いてムービーを再生する時の簡単なサンプルです。
一度コンポーネントからFLVPlaybackをステージにドラッグして
ライブラリに登録する必要があります。

import fl.video.FLVPlayback;
var flvplayer=new FLVPlayback();
flvplayer.source="test.f4v";
flvplayer.skin="Skin.swf";
flvplayer.skinBackgroundColor=0xEA6A91;
flvplayer.skinBackgroundAlpha=0.4;
flvplayer.autoPlay=true;
flvplayer.skinAutoHide=false;
flvplayer.width=400;
flvplayer.height=225;
flvplayer.volume=0;

flパッケージとflashパッケージはどういう区別か忘れました。
あとで調べておく事。

Adobeのlivedocsは遅すぎて実用的じゃありません。
みなさんどうされてるのでしょう?

参考
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/fl/video/FLVPlayback.html

2009 年 6 月 19 日

jQueryセレクタ 複数の場合

CATEGORYjavascriptjQuery  TAG 7:42 PM

たとえばJqueryのセレクタで

 $("div.classname")

などとした場合、複数の要素が選択される場合があります。

//要素数を取得
 $("div").length;

//n番目の要素を取得
$("div:eq(n)");

//n番目の属性nameを取得
$("div(n)").attr("name");

以前にメモったサンプルでは

selectors=$("div");
selectors[0].src=〜

などとやっておりましたがこれは、返り値がjqueryオブジェクトではないため
使いづらいです。総じてダメです。
ちなみにeq(n);を間違って:eq[n]などとしてはだめです(自分)。

2009 年 6 月 18 日

location.replace()?

CATEGORYjavascript  6:15 PM

URL移動するとき、Javascriptでは

location.href="url文字列";

で行っていましたが、こちらのほうがいいの?
試してみること。

またパス名のプロパティがlocationにあることも分かりました。
その名はpathname

location.pathname;
document.write(location.pathname;);

2009 年 6 月 18 日

Papervision3D簡単なサンプル

/*
ポイント
1.BasicViewをCAMERA3Dで作成
2.BasicView.startRendering()で描画開始
3.cameraのターゲットを変更、破棄
4.ターゲットなし状態でのカメラ移動
*/

import org.papervision3d.view.BasicView;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.cameras.Camera3D;

var world=new BasicView(0,0,true,false,"CAMERA3D");
addChild(world);


var obj_list=new Array();//球体を格納する配列
var btn_container=new Sprite();
btn_container.x=10;
btn_container.y=stage.stageHeight-30;
addChild(btn_container);

//3D空間にそれを貼り付ける
for (var i=0; i<4; i++) {
	//半径100、縦8分割、横8分割のボール(Sphere)を作る
	var obj=new Sphere(null,100,8,8);
	obj.x=i*300;
	world.scene.addChild( obj);
	obj_list.push(obj);


	//ターゲットを変更するボタンを作成
	var btn=new Sprite();
	btn.name="btn"+i;
	btn.graphics.beginFill(0x888888);
	btn.graphics.drawRect(0,0,80,20);
	btn.x=85*i;
	var textfield=new TextField();
	textfield.text=i;
	textfield.mouseEnabled=false;
	btn.addChild(textfield)
	
	
	btn_container.addChild(btn);
	btn.addEventListener(MouseEvent.CLICK,btnHandler);
}

//表示スタート
world.startRendering();

addEventListener(Event.ENTER_FRAME,enterFrame);

function enterFrame(event) {
	world.camera.x=(mouseX-stage.stageWidth/2)*3;
	world.camera.y=(stage.stageHeight/2-mouseY)*3;
	trace(world.camera.x,world.camera.y,world.camera.z);
}

function btnHandler(event) {
	var _name=event.target.name.substr(3,4);
	trace(_name);
	world.camera.target=obj_list[_name];
}

//ターゲットをなしにするボタン
btnNull.addEventListener(MouseEvent.CLICK,cameraTargetNullHandler);
function cameraTargetNullHandler(event) {
	trace("ターゲット破棄");
	world.camera.target=null;
	world.camera.rotationX=0;
	world.camera.rotationY=0;
	world.camera.rotationZ=0;
}