home > ActionScript

FileReferenceネタ AS2

January 07, 2009

FileReferenceネタ(AS2)でもういっちょ。
アップロードする画像ファイルのタイプを知りたい時に

file.type

としますがWindow の場合、ファイル拡張子になるのに
Macintosh の場合、4 文字のファイルタイプになるようです。

そこでファイルタイプを調べると
*.jpg;*.gif;*.png"は、 macType: "JPEG
*.gifは、macType: "GIFF"
*.swfは、 macType: "SWFL"
らしいです。

参考サイトはここ
http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001656.html

http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001656.html

AS3でやればもっと楽にできそうなのに...ややこしい。


Permalink | Comments (0)

Flashデバッグ用コード

December 23, 2008

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をつける。


Permalink | Comments (0)

FileReference.postData

December 22, 2008

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

【追記】
あと、AS3ではDataEvent.UPLOAD_COMPLETE_DATAみたいなのもあるようですね。

詳細はこちら
http://level0.kayac.com/2008/06/as3filereferencepostdata.php


ちなみにこれではデータを送信できてもサーバーからの返り値を受け取ることはできないようです。
FlashPlayer9以上ならAS2でもonUploadCompleteDataで返り値も取れるっぽいですね(Require Flash Player 9.0.28.0 パラメータ)

onUploadCompleteData = function(fileRef: FileReference, data: String):Void {}

http://f-site.org/articles/2007/06/30234010.html

【さらに追記】
今度はMacだけupload()でアップができない現状が発生しました。
uploadした時に空の値を返さないとダメらしいです。

http://www.neetranger.com/red/2006/12/filereference2.html



Permalink | Comments (0)

外部サウンドmp3のループ再生

November 04, 2008

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


Permalink | Comments (0)

crossdomainファイルの階層指定

June 26, 2008

フラッシュは、別サーバーから画像等を読込む際にはサーバーのルートにあるcrossdomain.xmlファイルを読みにいくんですが、階層を指定できるみたいです。

flashファイルに下記を記入する。
System.security.loadPolicyFile("http://www.sample.com/sample/crossdomain.xml");

そうするとsample以下のファイルに対してのみ指定できる。

あとは指定の階層にcrossdomain.xmlファイルをアップロードするだけです。


<?xml version="1.0" ?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" />
</cross-domain-policy>


Permalink | Comments (0)

CASAでグループロード

June 24, 2008

CASA Frameworkでグループを指定してグループ毎にロード設定をする方法。

import org.casaframework.load.media.MediaLoad;
import org.casaframework.load.LoadGroup;
import org.casaframework.load.base.BytesLoadInterface;
import org.casaframework.math.Percent;

var _LoadGroup_obj:LoadGroup;
_LoadGroup_obj = new LoadGroup();

var imageLoad: MediaLoad = new MediaLoad(_background_mc,tmp_url_str);
//イメージローダーにプッシュ
_LoadGroup_obj.addLoad(imageLoad);

//同様にプッシュ
imageLoad = new MediaLoad(_background_mc,tmp_url_str);
_LoadGroup_obj.addLoad(imageLoad);

//イメージローダーにプッシュ
_LoadGroup_obj.addLoad(imageLoad);

//ハンドラーの設定
_LoadGroup_obj.addEventObserver(_this_obj, LoadGroup.EVENT_LOAD_COMPLETE, "onGroupCompleteFunc");
_LoadGroup_obj.addEventObserver(_this_obj, LoadGroup.EVENT_LOAD_ERROR, "onGroupLoadErrorFunc");
_LoadGroup_obj.addEventObserver(_this_obj, LoadGroup.EVENT_LOAD_PERCENT, "onGroupLoadPercentFunc");
_LoadGroup_obj.start();

function onGroupCompleteFunc(sender:LoadGroup):Void {
 trace("Complete!");
}
function onGroupLoadErrorFunc(sender:LoadGroup,failedLoad:BytesLoadInterface):Void {
 trace("Error");
}

function onGroupLoadPercentFunc(sender:LoadGroup, progress:Percent):Void {
var per_num:Number = progress.getPercentage();
trace("My group is " + per_num + "% loaded.");//パーセント表示
}


Permalink | Comments (0)

id

June 14, 2008

大量にボタンを生成する際によく使う設定


for(i = 1; i <= ∞ ; i++ ){
 sample["s_btn"+i].id = i;
 sample["s_btn"+i].onRelease = function(){
  Action(this.id);//演出
 };
}


Permalink | Comments (0)

setMask()

setMaskって複数のオブジェクトにかけれない。なのでマスクを多用するする場合は初めにきちんと設計しておかないとダメです。

【追記】 2010.3.8

AS3ではこれだけで大丈夫です。
mainmc.mask = sample;
※ mainmcにsample の形状でマスクをかける場合

解除する場合は
mainmc.mask = null;
でOK


Permalink | Comments (0)

innerHTMLのバグ

May 21, 2008

Flash上にレイヤーでhtmlを表示するinnerHTMLのバグ。

・Flashコンテンツに日本語入力ができない。
・マウスホイール機能がきかない。


Permalink | Comments (0)

FileReference()

May 20, 2008

ファイルのアップロードする方法

import flash.net.FileReference;

var myFile:FileReference = new FileReference();
var fileListener:Object = new Object();

// 参照・保存ダイアログで開く・保存を選択したときの処理
fileListener.onSelect = function(file:FileReference):Void {
var uploaded:Boolean = myFile.upload("uploader.php");

};
// 参照・保存ダイアログでキャンセルを選択したときの処理
fileListener.onCancel = function(file:FileReference):Void {

};
// アップロード開始時の処理
fileListener.onOpen = function(file:FileReference):Void {

};
// アップロード中の処理
fileListener.onProgress = function(file:FileReference, nLoadedBytes:Number, nTotalBytes:Number):Void {

};
fileListener.onComplete = function(file:FileReference):Void {
// アップロード完了時の処理
};
myFile.addListener(fileListener);

var ImageTypeList:Array = new Array();
ImageTypeList.push({description: "ImageType", extension: "*.jpg;*.png"});//アップロードできる形式
myFile.browse(ImageTypeList);//ファイルを選択できるファイル参照ダイアログボックスを表示

詳しくはここ
http://www.adobe.us/livedocs/flex/2_jp/langref/flash/net/FileReferenceList.html

また、アップするのはuploader.phpで

<?php
$file=$_FILES['Filedata'];//アップデータ
copy($file['tmp_name'],"./dummy/".$file['name']);
?>

$_FILE[ パラメータ名 ][ name ] アップロードファイル名
$_FILE[ パラメータ名 ][ type ] MIMEタイプ
$_FILE[ パラメータ名 ][ size ] アップロードされたファイルサイズ
$_FILE[ パラメータ名 ][ tmp_name ] テンポラリファイル名。アップロードされたファイルが一時的に保存されたファイルパス
$_FILE[ パラメータ名 ][ error ] エラーコード。正常にアップロードされたらゼロになります。

詳しくは
http://www.php-ref.com/web/03_move_uploaded_file.html


Permalink | Comments (0)

Flash内のテキスト改行方法

April 01, 2008

【追記20110628】
どうも以前の方法では無理なので改めてメモります。


//改行
private function crlf2lf(str:String):String {
 str = str.replace(/\r\n/g, '\n');
 return str;
}

var sampletxt:String = crlf2lf("サンプル1\nサンプル2");
trace(sampletxt);

//出力
サンプル1
サンプル2

XMLからの値を取得する場合は
&#xA;」または「&#xD;」でいけるみたい。
※コピペする際に&は半角に修正ください。

参考サイトはこちら
http://memo.kappa-lab.com/2008/09/textfieldcr.html

〜〜〜〜〜〜

改行文字です。恥ずかしながら知りませんでした。

var myName:String = "publicroots";
myAge:Number = 29;
trace(myName+newline+myAge);

//出力
publicroots
29


Permalink | Comments (0)

System.setClipboard()

March 21, 2008

Flash内からシステムクリップボードに値や文字をコピーする。

システムクリップボードに値や文字をコピーすることができます。
import flash.system.System;
System.setClipboard("文字列");

【追記】2010.04.22
Flash Player 10からは、ユーザアクションがないとコピーできないようです。
フルスクリーンと同じみたいです。

http://blogs.adobe.com/akamijo/archives/2008/10/flash_player_10_8.html


Permalink | Comments (0)

読み込みファイル

January 20, 2008

親ファイルに読み込んだ子ファイルの_rootは親ファイルの_rootになりますが、子ファイルのタイムラインに
this._lockroot = true;
と書くと、子ファイルの中で書いた_rootは子ファイルの_rootに固定されるようになります。

また、子ファイルを別のサーバーにおいた場合、親ファイルとの間では制御ができなくなるようです。そんな時は、親ファイルに
System.security.allowDomain("小ファイルのドメイン");
を書くと制御できるようになります。


Permalink | Comments (0)

Flashからメーラー立ち上げ

January 10, 2008

Flashからメーラーを立ち上げる方法は

getURL("mailTo:送信先アドレス?subject=件名&body=本文");

文字は下記アドレスでURLエンコードする。
http://www.tagindex.com/tool/url.html

基本的にthunderbirdはNGだし、かなり不安定です。

getURLは、ホストアプリケーション(ブラウザあるいはOS)にその引数(mailto)を要求として渡すだけなので、その結果どういう処理が行われるかは、ホストアプリケーションの解釈に依存します。なので全ての環境で統一するのは無理そうですね。

やるならフォームを作った方がいでしょう。


Permalink | Comments (0)

useHandCursor

December 27, 2007

ボタンの機能をきりたいときは、MovieClip.enabled = false;を使うんですが、もっと簡単にてっとりばやくきる場合は、空ボタンを全面にしいてな名前を「BtnName」にして下記のスクリプトを書けばOKです。

on(rollOver){
 BtnName.useHandCursor = false;
}

簡単で意外に使えます。


Permalink | Comments (0)

onPressとonRelease

October 29, 2007

ボタンの設定で僕はよくonPressを使うんですが、onPressだとgetURL("http://sample.com","_blank");でページを開く時に、WinのFirefoxでポップアップウィンドウブロックの警告が出るようです。

samplebtn.onPress = function(){
 getURL("http://sample.com","_blank");
}
では警告が出る。

onReleaseでは出ないようです。

samplebtn.onRelease = function(){

getURL("http://sample.com","_blank");

}

知らなんだ。


Permalink | Comments (0)

TextField.onChanged

October 23, 2007

テキストエリアに、ユーザーが何か反応した時の呼出される関数。例えばユーザーがタイプをしたり、コピー&ペーストなどのコマンドを実行してテキストの内容を変更した場合です。

TextField.onChanged = function(){〜}


Permalink | Comments (0)

マウスが動けばメニューが消えるエフェクト

マウスが動けばメニューは消えて、マウスが静止しているとまた表示する。そんなのを創りたかったんだけど、意外に手間取った。オブジェクト名が「menu_obj」のメニューをルートに配置してあります。

var flag = false;
var mouseintervalID = false;

mouseObj = new Object();
mouseObj.onMouseMove = function() {
if(flag == false ){
//マウスが静止状態
flag = true;
}else{
//マウスが移動状態
flag = false;
//ボタン機能復活
_root.menu_obj._visible = true;
_root.menu_obj.enabled = true;
}
clearInterval(mouseintervalID);
//1秒後にメニューを消す
mouseintervalID = setInterval(MouseFunc,1000);
}
Mouse.addListener(mouseObj);


function MouseFunc(){
flag = false;
clearInterval(mouseintervalID);
//ボタン機能きる
_root.menu_obj._visible = false;
_root.menu_obj.enabled = false;
}


Permalink | Comments (0)

onHTTPStatus

October 11, 2007

外部のデータとやり取りをする場合に、その結果を判定してくれるパラメント。ヘルプには”Flash Player がサーバーから HTTP ステータスコードを受け取ると、呼び出されます。このハンドラを使用することにより、HTTP ステータスコードを取得してそれに基づいて処理を行えます。”と書いる。これでエラーの詳細が分かる。だた、onHTTPStatusは確実に動くわけではないようなこともかかれている。実際、macのsafariとfirefox、winのIEとfirefoxでみたところ、出力データに違いがあった。全面的には信用しない方がいいかも。

myVars = new LoadVars ();
myVars.searchword = _root.load_mc.top_mc.board_mc.theTextFild.text;
myVars.sendAndLoad ("http://www.webpromotion.jp/angfa/search.php", myVars,"post") ;
myVars.onLoad = function(Success) {
if(Success){
//受信アクション
trace("Success");
//受信後のアクション
}else{
  trace("false");
 }
}
myVars.onHTTPStatus = function(httpStatus:Number){
 this.httpStatus = httpStatus;
 if(httpStatus < 100){
  this.httpStatusType = "flashError";
 }else if(httpStatus < 200){
 this.httpStatusType = "informational";
 }else if(httpStatus < 300){
 this.httpStatusType = "successful";
 }else if(httpStatus < 400){
  this.httpStatusType = "redirection";
 }else if(httpStatus < 500){
 this.httpStatusType = "clientError";
 }else if(httpStatus < 600){
  this.httpStatusType = "serverError";
 }
 _root.hanntei.text= this.httpStatusType;
 trace(this.httpStatusType);
}

Permalink | Comments (0)

Flashで文字入力制限

October 03, 2007

Flashで入力文字をひらがなだけに制限したいときに

theTextFild.restrict = "あ-ん";

として、テキスト入力フォームの名前をtheTextFildにすれば、ひらがなしかうてません。
文字を追加したい時は、"あ-ん"のところに、「,」で追加すればOK。

知らなかった・・・・。


Permalink | Comments (0)

SWFAddress Ver3

August 24, 2007

またまた、SWFAddressねた。
これを使うと、どうもあるはずのないhtmlを読みにいってるみたい。swfaddress.jsのある同階層の同じ名前のswfaddress.htmlを読みにいってるので、ログをとる時にこのページでエラーがでる上に、アクセスランキングも上位にくるらしい。知らんかった。

Safariのウィンドウの構成ファイル一覧で確認できる。swfaddress.jsの中身はあまり確認していなかったので分からんかた。。。とりあえず何もないswfaddress.htmlファイルを同じ階層に入れてエラーだけは解決した。

結構最近、この方法をつかってるサイトを確認したけど、そんな現象はおこっていないようです。独自でプログラムを書いてるっぽい。そりゃでないわな。。。。

【追記】
ちなみに、swfaddress.jsの変数"html"をswfaddress.gifに変えて、同階層にswfaddress.gifを入れておくと、gif扱いになるみたい。

【追記】
ブラウザーのタイトルを変えなければ、この問題は解決できるようです。まだ試してないですが・・・


Permalink | Comments (0)

enabled

ボタンの設定を一時的に切る時に使うそうです。
知りませんでした。今まではボタンの機能を切る時には悪戦苦闘してました。

MovieClip.onRollOver = function(){
Action1;
};
MovieClip.onRollOut = function(){
Action2;
};
MovieClip.onPress = function(){
Action3;
};
を切りたいとき、
MovieClip.enabled = false;
復活したいとき、
MovieClip.enabled = true;
でOK。

Permalink | Comments (0)

SWFAddress Ver2

August 10, 2007

このSWFAddressですが、どうも同時にgetURLでjavascriptを操作する時に、エラーが出るみたいで。それもIEのみ‥。それ一番最悪じゃないですか。ってことでいろいろ試したけど無理でした。そして半ば諦めかけていた時に、ここ↓を発見。

http://un-q.net/2007/07/geturl_window_open_swfaddress.html

ExternalInterface.call経由でjavascriptを操作しないと、SWFAddressは死んでしまうんです。

import flash.external.ExternalInterface;
//javascriptで実行したい関数
ExternalInterface.call("function() {javascript:SAMPLE('xxxxxxxx');}");
}

ほんまにたすかりました。


Permalink | Comments (0)

SWFAddress

August 02, 2007

Flashの問題の一つのパーマリンク。Flash内部のコンテンツにブックマークができないやつです。そこでSWFAddressがあれば大丈夫。

必要なもの↓
Asual > SWFAddressからSWFAddress.asとswfaddress.js
SWFObjectからswfobject.js

ちなみに、ローカルでファイルを開くとFlash Playerのセキュリティー上の問題で、許可のチェックしないと見れませんが、サーバーにアップすれば問題なく作動します。あと、Operaではきかないようです。対応策を探しているのですが見つかりません。

SWFAddress.setValue('ページの名前');でアドレスは変わります。ブラウザータイトルを変える時はSWFAddress.setTitle('ページのタイトル');で大丈夫。それからSWFAddress.onChangeで、そのアドレスを打ち込んだ時にそのコンテンツにジャンプする関数を書く。この書き方は、サンプルが見つからなかったのでアナログちっくになっています。


import SWFAddress;


btn1.onRelease = function() {

  SWFAddress.setValue('page1/');

  //タイトル変更

  //SWFAddress.setTitle('page1');

  gotoAndPlay("page1");

}

btn2.onRelease = function() {

  SWFAddress.setValue('page2/');

  gotoAndPlay("page2");

}

btn3.onRelease = function() {

  SWFAddress.setValue('page3/');

  gotoAndPlay("page3");

}

SWFAddress.onChange = function() {

//ページ移動の関数

var address:String = SWFAddress.getValue();
   switch(address){
   case 'page1/':
      gotoAndPlay("page1");
      break;
   case 'page2/':
      gotoAndPlay("page2");
      break;
   case 'page3/':
      gotoAndPlay("page3");
      break;
   }
}

htmlのhead、Bobyタグ内には


<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript" src="swfaddress.js"></script>



<div id="flashcontent1">
代替テキスト(SEO対策) または 代替画像
</div>
<script type="text/javascript">
 // <![CDATA[
 var so = new SWFObject("samp.swf", "samap", "550", "400", "7.0.19.0", "#FFFFFF", true);
 so.addParam("allowScriptAccess", "sameDomain");
 so.addParam("loop", "true");
 so.addParam("quality", "best");
 so.addParam("menu", "false");
 so.write("flashcontent1");
 // ]]>
</script>


Permalink | Comments (0)

クラス定義でメニュー設定

June 18, 2007

クラス定義の勉強中。簡単なメニューをクラス定義して製作してみました。簡単なサンプルです。





まず、Mymenu.asというクラスを定義する。

class Mymenu {

 var mc:MovieClip;

 //マウスオーバーした時の設定
 function btnback( mc:MovieClip , mos:Number , s:Number ):Void {
 
  //マウスがボタンの上下どちらからオーバーしたかを判別する
  var mcheight:Number = mc._height/3;
  var acell:Number = mcheight/2;

  if( mos <= acell ){
   var point = -mcheight;
  }else{
   var point = mcheight;
  }

  mc.onEnterFrame = function() {
   mc._y += (point - mc._y)/s;
   if (Math.abs(point - mc._y) < 0.4) {
    mc._y = point;
    delete mc.onEnterFrame;
   }
  }
  }

  //マウスアウトした時の設定
  function btnbackOut( mc:MovieClip , mos:Number , s:Number ):Void {
   mc.onEnterFrame = function() {
    mc._y += (mos - mc._y)/s;
    if (Math.abs(mos - mc._y) < 0.4) {
     mc._y = mos;
     delete mc.onEnterFrame;
    }
   }
  }
}

そして、Flashファイルを作成する。

//インスタンスの生成

var menuObj:Mymenu = new Mymenu(menu_mc1.menu_t);
var menuObj2:Mymenu = new Mymenu(menu_mc2.menu_t);
var menuObj3:Mymenu = new Mymenu(menu_mc3.menu_t);


//BTN1設定
this.menu_mc1.onRollOver = function(){
 menuObj.btnback( menu_mc1.menu_t, this._ymouse , 3 );
 photo_mc.gotoAndStop(2);
 _root.mozaicIn();
}
this.menu_mc1.onRollOut = function(){
 menuObj.btnbackOut( menu_mc1.menu_t,0, 3 );
}
//BTN2設定
this.menu_mc2.onRollOver = function(){
 menuObj2.btnback( menu_mc2.menu_t, this._ymouse , 3 );
 photo_mc.gotoAndStop(3);
 _root.mozaicIn();
}
this.menu_mc2.onRollOut = function(){
 menuObj2.btnbackOut( menu_mc2.menu_t,0, 3 );
}
//BTN3設定
this.menu_mc3.onRollOver = function(){
 menuObj3.btnback( menu_mc3.menu_t, this._ymouse , 3 );
 photo_mc.gotoAndStop(4);
 _root.mozaicIn();
}
this.menu_mc3.onRollOut = function(){
 menuObj3.btnbackOut( menu_mc3.menu_t,0, 3 );
}
this.stop();

あとは、ボタンにマウスオーバーされた時の演出を設定する。

function mozaicIn():Void{
 var mozaicSize:Number = 100;//初期のモザイクサイズ
 var TARGET:MovieClip = photo_mc;//モザイクをかけるMC名
 var SMALL:Number = 0.9;//モザイクサイズの縮小率
 var DEPTH:Number = 100;//モザイク用のMCの深度

 import flash.display.*;
 import flash.geom.*;
 this.createEmptyMovieClip("mozaicInTemp_mc", DEPTH);
  mozaicInTemp_mc.onEnterFrame = function():Void{
  var mtx:Matrix = new Matrix();
  var bmpData:BitmapData = new BitmapData(Math.floor(TARGET._width / mozaicSize),
  Math.floor(TARGET._height / mozaicSize), false);
  this.attachBitmap(bmpData, 1);
   mtx.scale(1 / mozaicSize, 1 / mozaicSize);
   bmpData.draw(TARGET, mtx);
   this._width = TARGET._width;
   this._height = TARGET._height;
    this._x = 312.5;
    this._y = 20;
    if (mozaicSize == 1){
     delete this.onEnterFrame;
     this.removeMovieClip();
    }else{
     mozaicSize *= SMALL;
     if (mozaicSize <= 1)mozaicSize = 1;
    }
  }
}



Permalink | Comments (0)

ColorMatrixFilter()

May 29, 2007

ColorMatrixFilter( matrix:Array )
RGBA カラー値とアルファ値の4×5のマトリックス構成を持つ 20 個のアイテムの配列です。 これで彩度変更、色相回転、輝度アルファ変換などの効果を行うことができます。

配列の内容は以下
 R G B A ofs
r 1 0 0 0 0
g 0 1 0 0 0
b 0 0 1 0 0
a 0 0 0 1 0
細かい設定の内容はよく分かりませんが、それはいじって覚えるほうがいいでしょう。


かっこいいサンプルがあったのでリンク。
http://casualplay.net/blog/2005/11/_blendmode_1.html


Permalink | Comments (0)

blendMode

May 25, 2007

MovieClip.blendMode="add" or 8
のように記述すれば、MovieClipを加算してくれます。モードの種類は名前か数字で書きます。

モードの種類
"normal" (1) [通常]
"layer" (2) [レイヤー]
"multiply" (3) [乗算]
"screen" (4) [スクリーン]
"lighten" (5) [比較 (明)]
"darken" (6) [比較 (暗)]
"difference" (7) [差の絶対値]
"add" (8) [加算]
"subtract" (9) [減算]
"invert" (10) [反転]
"alpha" (11) [アルファ]
"erase" (12) [消去]
"overlay" (13) [オーバーレイ]
"hardlight" (14) [ハードライト]


Permalink | Comments (0)

Matrix クラス

Matrix クラスによく使うメソッドがあるんですね。今さらですが気付いたのでメモ。

translate メソッド : x座標,y座標を変化させてMCを移動させたい時に使用
scale メソッド : MCを拡大/縮小したい時に使用
rotate メソッド : MCを回転させたい時に使用
draw メソッド : MCの情報を別なMCに書き込む

使用例

//クラスをインポート
import flash.geom.Matrix

//Matrixクラスのインスタンスを生成
var _mat:Matrix = new Matrix();

//x軸に200、y軸に100、平行移動
_mat.translate(200,100);

//45度、回転(角度はラジアン)
_mat.rotate( 45*Math.PI/180 );

//幅・縦の倍率を0.5倍
_mat.scale( 0.5 , 0.5 );

//_matの情報をother_mcに書き込む
other_mc.draw(stamp,_mat)



Permalink | Comments (0)

getBounds()

May 20, 2007

getBounds( ) はムービークリップの指定されたインスタンスの最大・最小のX座標とY座標を示すプロパティを返します。

var Result = MovieClip.getBounds(_root);  //座標の取得
var Xmin = Result.xMin; //X座標最小値
var Xmax = Result.xMax; //X座標最大値
var Ymin = Result.yMin; //Y座標最小値
var Ymax = Result.yMax; //Y座標最大値

また_rootの部分をMovieClipの名前にすれば、そのMovieClip内の座標の値が得られます。




MCのx最大・最小座標、y最大・最小座標にラインを引くサンプルを作ってみました。
下記のソースを繰り返せばリニアに変更します。

var Result = this.obj.getBounds(_root); //座標の取得
var Xmin = Result.xMin; //X座標最小値
var Xmax = Result.xMax; //X座標最大値
var Ymin = Result.yMin; //Y座標最小値
var Ymax = Result.yMax; //Y座標最大値

this.createEmptyMovieClip("myMCy1", 1);
myMCy1.lineStyle ( 1 , 0xCC9933 , 100 );
myMCy1.moveTo ( 0 , Ymin );
myMCy1.lineTo ( 700 , Ymin );

this.createEmptyMovieClip("myMCy2", 2);
myMCy2.lineStyle ( 1 , 0xCC9933 , 100 );
myMCy2.moveTo ( 0 , Ymax );
myMCy2.lineTo ( 700 , Ymax );

this.createEmptyMovieClip("myMCx1", 3);
myMCx1.lineStyle ( 1 , 0xCC9933 , 100 );
myMCx1.moveTo ( Xmin, 0 );
myMCx1.lineTo ( Xmin, 200 );

this.createEmptyMovieClip("myMCx2", 4);
myMCx2.lineStyle ( 1 , 0xCC9933 , 100 );
myMCx2.moveTo( Xmax, 0 );
myMCx2.lineTo( Xmax, 200 );


Permalink | Comments (0)

attachMovie()

May 01, 2007

ライブラリーからステージ上に配置する時につかう関数ですが、きれいな書き方があるので紹介。

var Obj = this.attachMovie("Obj", "Obj" + n , n );
Obj._x = _root._xmouse;
Obj._y = _root._ymouse;
    ↓
var Obj = this.attachMovie("Obj", "Obj" + n , n ,
{_x : _root._xmouse, _y : _root._ymouse});

どちらも同じ意味ですが、これからは下の方を。


Permalink | Comments (0)

画面解像度

April 06, 2007

ユーザーの画面解像度が分かるASがあるみたい。どういう場合に使うかわ良く分かりませんが一応メモ。

trace(System.capabilities.screenResolutionX);
trace(System.capabilities.screenResolutionY);

Permalink | Comments (0)