home > AS3

SWFObjectとFlashVars

December 22, 2008

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>

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

Posted at 11:20 AM | Comments (0)

mouseEnabled

November 23, 2008

AS2ではuseHandCursorでボタンの機能を無効化していたのですが、AS3では

_mc.mouseEnabled = false;

でOK。

Posted at 09:07 PM | Comments (0)

AS3でカスタムイージング

October 18, 2008

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));
}

Posted at 05:53 PM | Comments (0)

setChildIndex()

October 17, 2008

最前面にするとき
var lastIndex:int = 全面にするMCの親.numChildren - 1;
全面にするMCの親.setChildIndex(全面にするMC, lastIndex);
(numChildren ・・・ この子リストに含まれる子の数)

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

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

Posted at 02:14 PM | Comments (0)

自身のロード状況を表示

September 23, 2008

//------------------------------------------
//ローディング設定
//------------------------------------------
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();


Posted at 06:01 PM | Comments (0)

Loader

外部の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);
  }
 }
}

Posted at 05:50 PM | Comments (0)

Papervision3Dでピクセル等倍表示

ピクセル等倍になる距離 = 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

Posted at 05:37 PM | Comments (0)

Tweener

September 09, 2008

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

Posted at 09:54 PM | Comments (0)

AS3でリンク設定

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");

なんかめんど臭い。

Posted at 09:50 PM | Comments (0)

AS3でFlv再生

September 05, 2008

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);
}
 }
}

Posted at 08:35 PM | Comments (0)

AS3のメモリー解放

これがなかなかやっかいです。外部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

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

Posted at 08:25 PM | Comments (0)

Papervision3Dでマウスに反応

Viewport3D.interactive = true

にする。

Posted at 08:18 PM | Comments (0)

AS3でサウンド再生

AS3で音を再生する方法。

import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.*;

var mySound:Sound;
var mySoundChannel:SoundChannel;
var mySoundTransform:SoundTransform = new SoundTransform();
var soundURL = new URLRequest("sound/Loop.mp3"); //ロードするMP3ファイルのURL

//再生
public function MainBGM_Play(){
 mySound = new Sound(soundURL);
 mySoundChannel = mySound.play(0,99);
 mySoundTransform.volume = 1;
 mySoundChannel.soundTransform = mySoundTransform;
}
//音量調整
public function MainBGM_Small(){
 mySoundTransform.volume = 0.5;
 mySoundChannel.soundTransform = mySoundTransform;
}
public function MainBGM_Stop(){
 mySoundTransform.volume = 0;
 mySoundChannel.soundTransform = mySoundTransform;
}
//完全にストップ
public static function SoundAllNo(){
 mySoundTransform.volume=0;
 SoundMixer.soundTransform = mySoundTransform;
 SoundMixer.stopAll();//再生中のサウンドをすべて停止します。
}

Posted at 08:03 PM | Comments (0)

AS3

September 04, 2008

最近、やっとAS3を本腰入れてやってます。基本実戦で覚えるタイプなのでかなり苦戦しています(泣)
いろいろメモしておきたい事が山ほどあるのでこれから随時アップしていきます。

Posted at 05:28 PM | Comments (0)