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"
らしいです。
AS3でやればもっと楽にできそうなのに...ややこしい。
Tweet
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をつける。
Tweet
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
Tweet
外部サウンド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
Tweet
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>
Tweet
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.");//パーセント表示
}
Tweet
id
June 14, 2008
大量にボタンを生成する際によく使う設定
for(i = 1; i <= ∞ ; i++ ){
sample["s_btn"+i].id = i;
sample["s_btn"+i].onRelease = function(){
Action(this.id);//演出
};
}
Tweet
setMask()
setMaskって複数のオブジェクトにかけれない。なのでマスクを多用するする場合は初めにきちんと設計しておかないとダメです。
【追記】 2010.3.8
AS3ではこれだけで大丈夫です。
mainmc.mask = sample;
※ mainmcにsample の形状でマスクをかける場合
解除する場合は
mainmc.mask = null;
でOK
Tweet
innerHTMLのバグ
May 21, 2008
Flash上にレイヤーでhtmlを表示するinnerHTMLのバグ。
・Flashコンテンツに日本語入力ができない。
・マウスホイール機能がきかない。
Tweet
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
Tweet
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
Tweet
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
Tweet
読み込みファイル
January 20, 2008
親ファイルに読み込んだ子ファイルの_rootは親ファイルの_rootになりますが、子ファイルのタイムラインに
this._lockroot = true;
と書くと、子ファイルの中で書いた_rootは子ファイルの_rootに固定されるようになります。
また、子ファイルを別のサーバーにおいた場合、親ファイルとの間では制御ができなくなるようです。そんな時は、親ファイルに
System.security.allowDomain("小ファイルのドメイン");
を書くと制御できるようになります。
Tweet
Flashからメーラー立ち上げ
January 10, 2008
Flashからメーラーを立ち上げる方法は
getURL("mailTo:送信先アドレス?subject=件名&body=本文");
文字は下記アドレスでURLエンコードする。
http://www.tagindex.com/tool/url.html
基本的にthunderbirdはNGだし、かなり不安定です。
getURLは、ホストアプリケーション(ブラウザあるいはOS)にその引数(mailto)を要求として渡すだけなので、その結果どういう処理が行われるかは、ホストアプリケーションの解釈に依存します。なので全ての環境で統一するのは無理そうですね。
やるならフォームを作った方がいでしょう。
Tweet
useHandCursor
December 27, 2007
ボタンの機能をきりたいときは、MovieClip.enabled = false;を使うんですが、もっと簡単にてっとりばやくきる場合は、空ボタンを全面にしいてな名前を「BtnName」にして下記のスクリプトを書けばOKです。
on(rollOver){ BtnName.useHandCursor = false; }
簡単で意外に使えます。
Tweet
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");
}
知らなんだ。
Tweet
TextField.onChanged
October 23, 2007
テキストエリアに、ユーザーが何か反応した時の呼出される関数。例えばユーザーがタイプをしたり、コピー&ペーストなどのコマンドを実行してテキストの内容を変更した場合です。
TextField.onChanged = function(){〜}
Tweet
マウスが動けばメニューが消えるエフェクト
マウスが動けばメニューは消えて、マウスが静止しているとまた表示する。そんなのを創りたかったんだけど、意外に手間取った。オブジェクト名が「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;
}
Tweet
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);
}
Tweet
Flashで文字入力制限
October 03, 2007
Flashで入力文字をひらがなだけに制限したいときに
theTextFild.restrict = "あ-ん";
として、テキスト入力フォームの名前をtheTextFildにすれば、ひらがなしかうてません。
文字を追加したい時は、"あ-ん"のところに、「,」で追加すればOK。
知らなかった・・・・。
Tweet
SWFAddress Ver3
August 24, 2007
またまた、SWFAddressねた。
これを使うと、どうもあるはずのないhtmlを読みにいってるみたい。swfaddress.jsのある同階層の同じ名前のswfaddress.htmlを読みにいってるので、ログをとる時にこのページでエラーがでる上に、アクセスランキングも上位にくるらしい。知らんかった。
Safariのウィンドウの構成ファイル一覧で確認できる。swfaddress.jsの中身はあまり確認していなかったので分からんかた。。。とりあえず何もないswfaddress.htmlファイルを同じ階層に入れてエラーだけは解決した。
結構最近、この方法をつかってるサイトを確認したけど、そんな現象はおこっていないようです。独自でプログラムを書いてるっぽい。そりゃでないわな。。。。
【追記】
ちなみに、swfaddress.jsの変数"html"をswfaddress.gifに変えて、同階層にswfaddress.gifを入れておくと、gif扱いになるみたい。
【追記】
ブラウザーのタイトルを変えなければ、この問題は解決できるようです。まだ試してないですが・・・
Tweet
enabled
ボタンの設定を一時的に切る時に使うそうです。
知りませんでした。今まではボタンの機能を切る時には悪戦苦闘してました。
MovieClip.onRollOver = function(){を切りたいとき、
Action1;
};
MovieClip.onRollOut = function(){
Action2;
};
MovieClip.onPress = function(){
Action3;
};
MovieClip.enabled = false;復活したいとき、
MovieClip.enabled = true;でOK。
Tweet
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');}");
}
ほんまにたすかりました。
Tweet
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>
Tweet
クラス定義でメニュー設定
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;
}
}
}
Tweet
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
Tweet
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) [ハードライト]
Tweet
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)
Tweet
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 );
Tweet
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});
どちらも同じ意味ですが、これからは下の方を。
Tweet
画面解像度
April 06, 2007
ユーザーの画面解像度が分かるASがあるみたい。どういう場合に使うかわ良く分かりませんが一応メモ。
trace(System.capabilities.screenResolutionX);
trace(System.capabilities.screenResolutionY);
Tweet