PUBLICROOTS | mtFlash http://www.publicroots.com/fmt/ ja 2008-12-23T18:48:01+09:00 Flashデバッグ用コード http://www.publicroots.com/fmt/archives/000219.html Flashのデバッグ用コードです。
_urlでムービークリップのダウンロード元である SWF、JPEG、GIF、PNG の各ファイルの URL を取得してテスト環境かどうかの確認をする。
var tmp_str:String = _root._url.substring(0,4);
_DEBUG = (tmp_str != "http");
//_DEBUG = false;
var level_str:String;
level_str = (_DEBUG) ? "../" : "";

https → level_str=../;(一つ上の階層)
http → level_str= ;(同階層)

これで読込むファイルの前にlevel_strをつける。

]]>
ActionScript publicroots 2008-12-23T18:48:01+09:00
FileReference.postData http://www.publicroots.com/fmt/archives/000218.html FileReferenceで情報をmultipartで送信する方法。AS2
postDataはAS3から使用できるようになったと思っていたのですが違うみたいです。
配列アクセス演算子をつかって代入すれば大丈夫みたいです。

fileRef["postData"] = "post1=hoge&post2=hogehoge";
fileRef.upload("sample.php");

import flash.net.FileReference; 

allTypes = new Array();
imageTypes = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg)";
imageTypes.extension = "*.jpg; *.jpeg";
allTypes.push(imageTypes);

listener = new Object();

listener.onSelect = function(file:FileReference):Void {
trace("onSelect: " + file.name);
}
listener.onCancel = function(file:FileReference):Void {
trace("onCancel");
}
listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
}
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
}
listener.onHTTPError = function(file:FileReference):Void {
trace("onHTTPError: " + file.name);
}
listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: " + file.name + " errorString: " + errorString);
}
fileRef = new FileReference();
fileRef.addListener(listener);
fileRef.browse(allTypes);

fileRef["postData"] = "post1=hoge&post2=hogehoge";

file_btn.onRelease = function():Void {
fileRef.browse();
};
upload_btn.onRelease = function():Void {
fileRef.upload("sample.php");
};

]]>
ActionScript publicroots 2008-12-22T11:37:17+09:00
SWFObjectとFlashVars http://www.publicroots.com/fmt/archives/000217.html SWFObject v1.5の場合は

var so = new SWFObject("swf/main.swf", "main", "100%", "100%", "8", "#FFFFFF", true);
so.addVariable("FlashVars", "sample");
so.addParam("allowScriptAccess", "always");

so.write("flashContentsBlock");

SWFObject v2.1の場合は


<head>
<script type="text/javascript" src="swfobject-2-1.js"></script>
<script type="text/javascript">
function createPlayer(thePlaceholder, thePlayerId, theFile, theAutostart) {
var flashvars = {
file:theFile,
autostart:theAutostart
}
var params = {
allowfullscreen:"true",
allowscriptaccess:"always"
}
var attributes = {
id:thePlayerId,
name:thePlayerId
}
swfobject.embedSWF("player.swf", thePlaceholder, "320", "196", "9.0.115", false, flashvars, params, attributes);
}
function init() {
createPlayer("placeholder1", "player1", "xxxxxx1.flv", false);
createPlayer("placeholder2", "player2", "xxxxxx2.flv", false);
createPlayer("placeholder3", "player3", "xxxxxx3", false);
}
</script>
</head>

でいけるみたい。忘れそうなのでメモ。

]]>
AS3 publicroots 2008-12-22T11:20:44+09:00
mouseEnabled http://www.publicroots.com/fmt/archives/000214.html AS2ではuseHandCursorでボタンの機能を無効化していたのですが、AS3では

_mc.mouseEnabled = false;

でOK。

]]>
AS3 publicroots 2008-11-23T21:07:32+09:00
外部サウンドmp3のループ再生 http://www.publicroots.com/fmt/archives/000210.html var bgm_Sound:Sound = new Sound(this);
bgm_Sound.loadSound("sound/sample.mp3", true);
bgm_Sound.onLoad = function() {
 bgm_Sound.start(0,999);
}
bgm_Sound.start();

でOK。
下記ではうまくループできません。

var bgm_Sound:Sound = new Sound(this);
bgm_Sound.loadSound("sound/sample.mp3", true);
bgm_Sound.onSoundComplete = function() {
 bgm_Sound.start();
}
bgm_Sound.start();

参考はここ
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=547&forum=11

]]>
ActionScript publicroots 2008-11-04T18:57:03+09:00
AS3でカスタムイージング http://www.publicroots.com/fmt/archives/000208.html AS3でカスタムイージングを使う時は下記のfromCurve関数を設定すればOK。

private const _sample_array:Array = [{Mx:0,My:0,Nx:0,Ny:8,Px:10,Py:-83},{Mx:10,My:-75,Nx:26,Ny:-238,Px:17,Py:206},{Mx:53,My:-107,Nx:62,Ny:186,Px:-21,Py:-195},{Mx:94,My:-116,Nx:22,Ny:-202,Px:20,Py:175},{Mx:136,My:-143,Nx:54,Ny:156,Px:-18,Py:-174},{Mx:172,My:-161,Nx:14,Ny:-94,Px:14,Py:55},{Mx:200, My:-200}];

Tweener.addTween(SampleMC, {y:0, time:5, transition:fromCurve,transitionParams: _sample_array});

function fromCurve (t:Number,b:Number,c:Number,d:Number,pl:Array):Number {
 var r:Number = 200 * t/d;
 var i:Number = -1;
 var e:Object;
 while (pl[++i].Mx<=r) e = pl[i];
 var Px:Number = e.Px;
 var Nx:Number = e.Nx;
 var s:Number = (Px==0) ? -(e.Mx-r)/Nx : (-Nx+Math.sqrt(Nx*Nx-4*Px*(e.Mx-r)))/(2*Px);
 return (b-c*((e.My+e.Ny*s+e.Py*s*s)/200));
}

]]>
AS3 publicroots 2008-10-18T17:53:17+09:00
setChildIndex() http://www.publicroots.com/fmt/archives/000207.html 最前面にするとき
var lastIndex:int = 全面にするMCの親.numChildren - 1;
全面にするMCの親.setChildIndex(全面にするMC, lastIndex);
(numChildren ・・・ この子リストに含まれる子の数)

最背面にするとき
背面にするMCの親.setChildIndex(背面にするMC, 0);

http://ameblo.jp/linking/entry-10069008383.html

]]>
AS3 publicroots 2008-10-17T14:14:34+09:00
自身のロード状況を表示 http://www.publicroots.com/fmt/archives/000204.html //------------------------------------------
//ローディング設定
//------------------------------------------
import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts;

stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;

//▼SWFファイル容量取得
var totalBytes:uint = this.loaderInfo.bytesTotal;

//▼イベントハンドラ設定
stage.addEventListener(Event.ENTER_FRAME, xEnterFrame);

//▼関数定義
function xEnterFrame(event:Event) {

 var loadPer:uint = Math.floor(this.loaderInfo.bytesLoaded / totalBytes * 100);
 load_robo.h_mask.scaleY = loadPer/100;

 if (loadPer >= 100){
  load_robo.heart_click.alpha = 1;
  Tweener.addTween(load_robo, {alpha:0, time:2, transition:"easeOutExpo",
  delay:2, onComplete:onMainload});
  stage.removeEventListener(Event.ENTER_FRAME, xEnterFrame);
 }
}

//ローディング完了
function onMainload(){
 play();
}
stop();

]]>
AS3 publicroots 2008-09-23T18:01:16+09:00
Loader http://www.publicroots.com/fmt/archives/000203.html 外部のswfを読込む方法。

package {

 import flash.display.Loader;

 import flash.net.URLRequest

 
 public class MainLoad extends MovieClip{

  static var ldr_top:Loader;

  static var url_top:String;

  static var urImage_top:URLRequest;

  public function sample_load(){
   ldr_top = new Loader();
   url_top = "swf/top.swf";
   urImage_top = new URLRequest(url_top);
   ldr_top.load(urImage_top);
   mm.addChild(ldr_top);
  }
 }
}

]]>
AS3 publicroots 2008-09-23T17:50:28+09:00
Papervision3Dでピクセル等倍表示 http://www.publicroots.com/fmt/archives/000201.html ピクセル等倍になる距離 = camera.focus * camera.zoom - camera.focus
ピクセル等倍になる距離 = camera.focus * camera.zoom - camera.focus + camera.focus
でできるらしい。

camera.focus = 100;
camera.zoom = 11;

//ピクセル等倍になる距離 = camera.focus * camera.zoom - camera.focus
//ピクセル等倍になる距離 = camera.focus * camera.zoom - camera.focus + camera.focus
camera.z = camera.focus * camera.zoom - camera.focus;

詳しくはこちら
http://blog.r3c7.net/?p=166

]]>
AS3 publicroots 2008-09-23T17:37:11+09:00
Flash video (FLV) bitrate calculator http://www.publicroots.com/fmt/archives/000198.html AdobeからFLVエンコード時のビットレートを簡単に教えてくれるサイトがありました。
使えるかどうかは良くわからないですが念のためメモ。

http://www.adobe.com/devnet/flash/apps/flv_bitrate_calculator/

]]>
flv publicroots 2008-09-21T01:30:16+09:00
Tweener http://www.publicroots.com/fmt/archives/000192.html import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts;
import caurina.transitions.properties.FilterShortcuts;

ColorShortcuts.init();
FilterShortcuts.init();

Tweener.addTween(sample.MoveClip {alpha:1, _Blur_blurX:20, _Blur_blurX:20,
transition:"easeInQuart", time:0.5, delay:2.5, onComplete:Sample});

public function Sample(){
〜Action〜
}

かなり多用してます。
_brightnessもあります。

【追記】
解除する時は
MovieClip.removeTweens( 〜 );
でOK

]]>
AS3 publicroots 2008-09-09T21:54:57+09:00
AS3でリンク設定 http://www.publicroots.com/fmt/archives/000191.html import flash.net.navigateToURL;
import flash.net.URLRequest;

//_blank
var url_send:URLRequest = new URLRequest( "http://www.yahoo.co.jp/" );
navigateToURL(url_send);

//_self
var url_send2:URLRequest = new URLRequest( "http://www.yahoo.co.jp/" );
navigateToURL(url_send2, "_self");

なんかめんど臭い。

]]>
AS3 publicroots 2008-09-09T21:50:46+09:00
AS3でFlv再生 http://www.publicroots.com/fmt/archives/000187.html package {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;

 public class VideoSetting{

//NETSTREAM
var connection:NetConnection;
var netStream:NetStream;
var obj:Object;
var video_obj:Video;
var video_cotena:DisplayObjectContainer;

//ローカルファイルアクセス用のネットコネクションを作成する
connection = new NetConnection();
connection.connect (null);

//ネットストリームオブジェクトを作成する
netStream = new NetStream(connection);

//画面上に表示する
video_obj = new Video();
video_cotena.stage.addChild(video_obj);
video_obj.x = 0;
video_obj.y = 0;
video_obj.width = 900;
video_obj.height = 675;

//最背面に
video_cotena.stage.setChildIndex(video_obj, 0);
video_cotena.stage.addEventListener(Event.ENTER_FRAME, Main_EnterFrame);

function Main_EnterFrame(event:Event){
    //ビデオオブジェクトとネットストリームオブジェクトを関連付ける
video_obj.attachNetStream (netStream);
netStream.play("flv/Sample.flv");//再生

//-----------------------------------------------------------------
//再生中の FLV ファイルに埋め込まれている詳細情報を取得
//-----------------------------------------------------------------

obj = new Object();
obj.onMetaData = function(param:Object){

trace("総時間 : " + param.duration + "秒");
trace("幅 : " + param.width);
trace("高さ : " + param.height);
trace("ビデオレート : " + param.videodatarate + "kb");
trace("フレームレート : " + param.framerate + "fps");
trace("コーデックID : " + param.videocodecid);

//キューポイント
var key:String;
for( key in param ){
trace("[ key ] " + key + ": " + param[key]);
}
    duration = param.duration;
};

//キューポイント
obj.onCuePoint = function(infoObject:Object){
 var key_cue:String;
 for (key_cue in infoObject){

  if(infoObject[key_cue] == "half"){
trace("CuePoint : HALP");
//netStream.pause();
}
if(infoObject[key_cue] == "end"){
trace("CuePoint : END");
//netStream.pause();
}
}
 }
 netStream.client = obj;

 //-----------------------------------------------------------------
 //FLV設定
 //-----------------------------------------------------------------

 netStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandler);
 netStream.addEventListener(IOErrorEvent.IO_ERROR,URLLoaderIOErrorFunc);
 netStream.addEventListener(NetStatusEvent.NET_STATUS ,URLLoaderProgressFunc);

 function asyncErrorHandler(event:AsyncErrorEvent):void {
trace("ASYNC_ERROR");
 }
 function URLLoaderIOErrorFunc (event : IOErrorEvent) {
  trace ("ファイル入出力のエラー");
 }
 function URLLoaderProgressFunc (event : NetStatusEvent) {
  switch (event.info.code) {
  case "NetStream.Buffer.Empty" :
   trace ("バッファが空になったので中断");
   break;
  case "NetStream.Buffer.Full" :
   trace ("バッファを満たしたので再生");
   break;
  case "NetStream.Buffer.Flush" :
   trace ("ストリーム読み込みが終了した");
   break;
  case "NetStream.Play.Start" :
   trace ("再生の開始");
   break;
  case "NetStream.Play.Stop" :
   trace ("再生の停止");
 break;
  case "NetStream.Play.StreamNotFound" :
   trace ("FLV ファイルが見つからない");
   break;
  case "NetStream.Play.Failed" :
   trace ("その他のエラー");
   break;
  case "NetStream.Seek.Failed" :
   trace ("シークが失敗した");
   break;
  case "NetStream.Seek.InvalidTime" :
   trace ("有効ではないシーク時間を指定した");
   trace ("指定可能なシーク時間 : " + event.info.details);
   netStream.seek (event.info.details);
   break;
  case "NetStream.Seek.Notify":
   trace ("シーク操作を完了");
   break;
  default :
   trace ("その他のイベントコード:" + event.info.code);
}
 }
}

]]>
AS3 publicroots 2008-09-05T20:35:19+09:00
AS3のメモリー解放 http://www.publicroots.com/fmt/archives/000186.html これがなかなかやっかいです。外部swfをloaderで読込んで消したい時にunLoadするだけではメモリーは解放されません。

http://www.trick7.com/blog/2008/08/07-044657.php
http://www.kkfactory.net/mt/archives/2008/08/as3loaderbitmap.html

色々書いてるけど、もっと簡単にできないものでしょうか?

http://www.kkfactory.net/mt/archives/2008/08/as3loaderbitmap.html

これを実装してみたけど、うまくいきませんでした...

]]>
AS3 publicroots 2008-09-05T20:25:53+09:00