Home > flash Archive

flash Archive

< 2  3  4  5  6

Flash Player 10 - SecurityError

  • Posted by: daniwell
  • 2008年11月 6日 01:45
  • flash

Flash Player 10においてセキュリティ関連で変更があったため、
FileReference.download(),browse()などの呼び出しが、ユーザー操作以外のところで行なえなくなったみたい。

以下level0.KAYACさんのブログ記事で知りました。

_level0.KAYAC 『FlashPlayer10のセキュリティ仕様変更によって影響が出るFileReferenceの処理について。』

 
試しに前に作ったお絵描きツールで保存しようとしてみると、確かにエラーが。

SecurityError: Error #2176: ポップアップウィンドウを表示するなどの特定のアクションは、例えばマウスをクリックしたりボタンを押したりして、ユーザによる相互作用が発生した場合にのみ呼び出されます。

まあ使ってる人ほとんどいないだろうから対策採らなくてもよさそうだけど、
対策するとしたら以下のような感じかな(level0さんブログに記載のものとは別のやり方になります)。

  • FlashPlayerのバージョンを取得する
  • バージョン10だったら10用のswf読み込む
  • 10では直接ローカルにアクセスできるので、直で保存する

以上、こんな感じで。
画像をエンコードしたデータをbyteArrayに入れたら、
10ではFileReferenceを使って以下のように記述してローカルに保存できます。

var fr:FileReference = new FileReference();
fr.save( byteArray, "image.jpg" );

 
そういえば
Flash Player 10のバージョンチェックに関して、
その際の留意点がAdobe Developer Connectionの記事に載せられてます。

Flash Player 10 バージョン判別チェックリスト

なんかある意味2000年問題みたい^^

DotFilter setObj()

  • Posted by: daniwell
  • 2008年11月 4日 21:55
  • flash

DotFilter setObj

前記事のDotFilterに追加です。

配列からだけではなくて、MovieClipとかTextFieldとかからも
ドットパターンを生成できる方がなにかと便利かと思ったので、
新たにsetObjという関数を追加しました。

setObjでは、配列の変わりに、MovieClipなどのオブジェクトをセットします。
第2引数でパターンの元となる範囲を指定することができます。
(これはsetFilterにおける指定の仕方と同じ要領です)

使い方の例ですが、setObj部分以外に変更点はないので
以下の例はその部分だけになります(詳細は前記事参照)。

setArrayの代わりにsetObjを適用してみてください。

AS2.0版。
[class file: DotFilter.as (AS2.0) ]

df.setObj( pattern, { _x: 0, _y :0, _width :5, _height :5 } );

 
AS3.0版。
[class file: DotFilter.as (AS3.0) ]

df.setObj( pattern, { x: 0, y :0, width :5, height :5 } );

※引数のpatternの部分には、BitmapDate.drawが使用できるオブジェクトが入ります。

Continue reading

DotFilter

  • Posted by: daniwell
  • 2008年11月 4日 02:10
  • flash

DotFilter

2次元配列で指定したドットパターンをオブジェクト(MCなど)に適用するクラス。
お手軽にドットパターンを敷きたい時に結構役立つかも。

一応、AS2.0版とAS3.0版の両方を作ってみました。
以下クラスファイルとその使い方の例になります。

 
(2008/11/4 22:00 追記)
新たに、setObj関数追加
(下でダウンロードできるファイルは既に追加後のものになっています)

 
[class file: DotFilter.as (AS2.0) ]

import DotFilter;

var df :DotFilter = new DotFilter();

var array :Array = new Array();
// ドットパターン配列 タテ,ヨコのサイズは任意の大きさでよい
array = [
	[ 0x000000, 0xFF0000 ],
	[ 0x00FF00, 0x0000FF ]
	];

df.setArray( array );		// ドットパターンの配列をセット
df.setFilter( mc, { _x: 0, _y :0, _width :320, _height :240 } );	// mc に対して、座標[0,0]から320x240の大きさの範囲にドットフィルターを適用

setArrayでドットパターンとなる配列をセットします。
そして、そのパターンをsetFilterで mc に対して適用します。
適用範囲は第2引数のオブジェクトで指定できます。 (_x,_yは適用を開始する座標、_width,_heightはそれぞれ横幅と縦幅)

setFilterの第2引数は省略可能です(一部ないし全部)。
(デフォルトでは { _x: 0, _y :0, _width :Stage.width, _height :Stage.height } )

 
[class file: DotFilter.as (AS3.0) ]

var df :DotFilter = new DotFilter();
			
var sprite :Sprite = new Sprite();
var array :Array = new Array();
array = [
	[ 0x000000, 0xFF0000 ],
	[ 0x00FF00, 0x0000FF ]
	];

addChild( sprite );

df.setArray( array );
df.setFilter( sprite, { x: 0, y :0, width :320, height :240 } );

こちらも同じく、setFilterの第2引数は省略可となってます(一部ないし全部)。

Away3D HelloAway3D

  • Posted by: daniwell
  • 2008年11月 3日 11:07
  • 3D | away3D | flash

Away3Dは今まで触ったことがなかったんだけれども、
使ってみたら結構使い易いんじゃないかという予感。

ただ、付属のサンプルHelloAway3D.asは
コンパイルすると思いっきりエラーでます。
(ver 2.2.0の話になります)

以下の赤字部分のように修正する必要アリです。

package 
{
    import flash.display.*;
    import flash.events.*;
    import flash.utils.*;
    
    import away3d.containers.*;
    import away3d.primitives.*;
    import away3d.materials.*;
    
    [SWF(backgroundColor="#222266", frameRate="60", width="600", height="400")]
    public class HelloAway3D extends Sprite
    {
        public var view:View3D;
        public var sphere:Sphere;
        
        public function HelloAway3D()
        {
            view = new View3D();
            view.x = 300;
            view.y = 200;
            addChild(view);

            sphere = new Sphere({material:new WireColorMaterial(0xFF7700, 0xCC4400), radius:250, segmentsW:12, segmentsH:9, y:50});

            view.scene.addChild(sphere);
            view.camera.lookAt(sphere.position);

            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }

        private function onEnterFrame(event:Event):void
        {
            view.render();
            sphere.rotationY = getTimer() / 100;
        }

    }
}

あと、SDKに3.2以上(つまりFlashPlayer10の新機能が実装された版)を使うと、Matrix3Dが競合して上手くいきません。

でもAway3Dの次期バージョンである3.0においては
MatrixAway3Dとなってたので解消されてるみたいです。

http://away3d.googlecode.com/svn/branches/3.0.0/

FlashDevelop

  • Posted by: daniwell
  • 2008年11月 2日 14:28
  • flash

FlashDevelop

FlashDevelopとは、無料で利用可能なFlashの統合開発環境のこと。
風の噂では、結構良いらしいということだったので(ようやく)使ってみたら、ほんとに良かった^^

"無料にしては"とかそういった接頭語を付ける必要性がまったくないほど良いです。

現在進行中のSDKである、Flex SDK 4(コードネームGumbo)を入れて、
只今Flash Player 10の新機能体感中です。

JOI - 重力的音之泉 -

JOI - 重力的音之泉 -

JOI - 重力的音之泉 -
JOI - 重力的音之泉 -

ボールとか、ハコとか、床とか作って、
それらが触れ合ったときに奏でられる音を楽しむツールです。

名称は"JOI"。
重力的音之泉(Jyuuryoku teki Oto no Izumi)の略です。

Wiiリモコン版を先に作ったんだけれど、
マウス(+キーボード)でも操作できるようにしたので公開。

操作方法は、

  • クリック & ドラッグ : 物や床を生成します。
  • Z キー : 物や床及びその形状を変更します。
  • X キー : フィールド上の物のみを消去します。
  • C キー : フィールド上の床のみを消去します。
  • ホイール ( or A , S キー ) : 重力方向を変更します。
  • マウスを素早く動かす : フィールドを切り替えます。

とまあこんな感じです。
マウスを素早く動かす、というのは、スクラッチみたいな要領でカシャカシャっとマウスを動かしてみてください(結構大きく動かさないと反応しないかも)。

 
JOI.exe

スタンドアローンのexeファイルも置いておきます。

flashserver - send / receive

  • Posted by: daniwell
  • 2008年10月26日 01:47
  • flash

flashserverによる、Max/MSPとFlashとの通信についてのメモ。
とりあえずお互いに送信と受信できればいいやということで、物凄くシンプルに。

まずはMax/MSPの方から見ていきます。

MAX/MSP flashserver Test

flashserver : flashserverオブジェクト。後ろの引数はポート番号(1024以上で空いてるとこならどこでもOK)。
send : 特定のクライアントにデータを送信。この場合クライアント"1"に"Hello to Flash"というデータを送ります。
broadcast : sendと違い、接続しているすべてのクライアントにデータを送信。
prepend : setでクライアントのIPアドレスをセット(ローカルの場合は127.0.0.1)。

 
続いてFlash側。ActionScript3.0版。XMLSocketを使います。

var socket :XMLSocket = new XMLSocket();
socket.connect( "127.0.0.1", 31337 );

socket.addEventListener( Event.CONNECT, connectHandler );
socket.addEventListener( DataEvent.DATA, dataHandler );
button.addEventListener( MouseEvent.CLICK, clickHandler );

function connectHandler ( evt :Event ) :void 	// 接続時イベント
{
	trace( "connect" );
}
function dataHandler ( evt :DataEvent ) :void 	// 受信時イベント
{
	trace( evt.data );
}
function clickHandler ( evt :MouseEvent ) :void 
{
	socket.send( "Hello to MAX/MSP;" );	// データ送信
}

 
次はActionScript2.0版。同じくXMLSocketを使います。大体はAS3と似たような感じです。

var socket :XMLSocket = new XMLSocket();
socket.connect( "127.0.0.1", 31337 );

socket.onConnect = function ( ) :Void 	// 接続時イベント
{
	trace( "connect" );
}
socket.onData = function ( dat :String ) :Void 	// 受信時イベント
{
	trace( dat );
}
button.onPress = function( ) :Void 
{
	socket.send( "Hello to MAX/MSP;" );	// データ送信
}

 
以上、たったこれだけでデータの送受信ができてしまいます。

Block Transition

  • Posted by: daniwell
  • 2008年10月25日 15:32
  • flash

ブロック トランジション

ブロック状に、左上から画像が遷移します。
上の画像をクリックでサンプルを開きます。

 
[sample file: blockTransition.zip (Flash8) ]

一応サンプル挙げときますが、あんまりコメント多くないです。
悪しからず。

Bitmap Drag Effect

  • Posted by: daniwell
  • 2008年10月25日 03:00
  • flash

ドラッグエフェクト

上の画像のように、ドラッグしたような感じで表示されるエフェクト。
画像クリックでサンプルを開きます。

 
[sample file: effectDrag.zip (Flash8) ]

 
サンプルファイルを見ると分かるかと思いますが、
一応クラス化してます(EffectDrag)。

使い方は以下のような要領に。

import EffectDrag;	// クラスをimportする(置いた場所に応じて適宜変更)

var e :EffectDrag = new EffectDrag();
e.setMC( mc :MovieClip );	// エフェクトを適用したいMCをセット
e.type = 0;	// エフェクトの方向(0~3)
e.speed = 5;	// エフェクトの速さ(1以上の値)
e.wait = 0;	// 動き始めるまでの待機時間

e.start();	// 開始

注意点としては、適用するMCは左上基準にする必要アリです。

Nokia - Music Almighty Headset Competition

  • Posted by: daniwell
  • 2008年10月24日 00:18
  • flash

Nokia - Music Almighty Headset Competition
Nokia - Music Almighty Headset Competition

ぞれぞれの部分に対して素材、色、付属品を選ぶだけで
オリジナルのヘッドフォンがデザインできるサイト。

付属品に変なの多いので
案外楽しい。

< 2  3  4  5  6

Index of all entries

Home > flash Archive

Search
Feeds

Return to page top