November 03, 2006

AS2 Classコンフリクト ローカルタイム変更が影響?

あるとき、そんなはずはない例のコンフリクトエラーで書出しが完了しなくなり;
かなりorzに...
ASOファイルを削除してもNG。

そのときローカルタイムを取得してうんぬんするコンテンツをデバッグしていて
時間をいろいろ変えていたんだけど
どうやらそれが原因?のようで
正しい時間に戻したら解決した…;

投稿者 ekn : 03:45 PM | コメント (0)

October 20, 2006

casheAsBitmapとダイナミックテキストの透過処理

ダイナミックテキストが中に配置されたMovieClipの
casheAsBitmapプロパティ を trueにし
このMCの透過値(_alpha)を変更すれば
内部のダイナミックテキストにも透過が反映されると思っていたのに
できなかった…;

オーサリング時に「ランタイムビットマップキャッシュを使用する」にチェックした場合と
実行時に cacheAsBitmap = true にした場合、両方でダメ。

MCにフィルタが設定されていればBitmapになるはずだから
様子に影響を与えないfilterを適応して解決

var myDropShadowFilter = new flash.filters.DropShadowFilter(0, 0, 0x000000, 0);
MovieClip.filters=[myDropShadowFilter]

投稿者 ekn : 07:04 PM | コメント (0)

October 19, 2006

どういう状況であれ、自分(swf)と同階層のディレクトリを調べるには

_urlプロパティって、SWFに読み込まれた場合読込みもとSWFのパスが返ってくるのだとおもってたけど
そうじゃなくてちゃんと自分SWFのパスが返ってくるんだ!

だから、、、

読み込みたいイメージやXMLファイルは、自分(SWF)と同階層のディレクトリに配置されている。
しかし、自分(SWF)は、どこの階層にあるか特定できない親(SWF)にロードされる
という仕様のときに、イメージやXMLの階層を知るには、、、

var myfiledir = getMyDir(this);
function getMyDir(m:MovieClip):String{
var a1 = m._url.split("/");
a1.splice(a1.length-1);
return a1.join("/") + "/";
}

投稿者 ekn : 10:25 PM | コメント (0)

August 21, 2006

AS2:FlashでRSS AutoDiscovery

普通な感じでHTMLを読み込んで、XMLとしてパースして抽出。

RSSのURLのはHTMLのhead内の で、attributeのtype に
"application/xml"または"application/rss+xml"(atomは"application/atom+xml")が
指定さているもののattribute hrefでRSSのURLが指定される。

という仕様のもと抽出してみる。

linkタグの追い方はこう。

html/head/link

今回はとりあえず全部小文字で(小文字大文字別扱いだよね?)
パーサはxfactorstudio.com の xpath を使用。

AS2のClassにしてみた。
RSSのリストが配列で返ってくるようにした。
使用法はこう。

var oRSSAutoDiscovery = new RSSAutoDiscovery();
oRSSAutoDiscovery.onLoad = function(success,rsslist){
if(success){
  trace(ok);
  trace(rsslist);
}else{
  trace("error");
}
}
oRSSAutoDiscovery.load("http://quality.ekndesign.com/");

RSSAutoDiscovery:

投稿者 ekn : 05:37 PM | コメント (0) | トラックバック

August 17, 2006

Flash:AS2:MovieClipに複数の同じタイプのボタンアクションをつけるには

myButton_mcに対して複数のonReleaseを実装する例。

すでにメソッドがついているボタンにアクションを追加したい場合など。
誰かがつけた、まったく内容のわからんボタンにアクションを追加する必要がある場合とかにいいかも。

1コ目

myButton_mc.onRelease = function(){
trace("[1] callOnRelease");
}


2コ目

var oldOnRelease:Function = myButton_mc.onRelease;
myButton_mc.onRelease = function(){
oldOnRelease();
trace("[2] callOnRelease");
}

投稿者 ekn : 01:52 PM | コメント (0) | トラックバック

August 16, 2006

ブラウザを揺らすとFlashコンテンツもゆれるサンプル




★ブラウザを揺らしてください★
ウィンドウをつかんでぐぎぐぎと、

ブラウザを揺らすと画像がゆれる
大きく振るとモナリンの向きがかわるサンプル

JSで、ブラウザの位置を取得してFlashに渡します。

IE
window.screenLeft
window.screenTop

Mozilla系
window.screenX
window.screenY

これも、実験をかねて
getURLでJS宣言。


最初JSでsetIntervalを使ってFlashに一定間隔でブラウザの位置情報を送ってやったんだけど
FireFoxだと、ブラウザをつかんでいる間functionが呼び出されなかった
なので、Flash側でseIntervalでExternalInterface.callして位置情報を取得したらFFでもOKだった。
が、safariが×だすた。
safariは未解決

しっかし、この問題があるはずなのに
なぜか 貼り付けタグの id,nameに"external"を含んでないのに
IEでJSから結果が受け取れている。

たしかにあの不具合はおきていた。
ダイナミックに宣言されたファンクションからは戻り値をうけとれるってことなのか?

ん~なんなんだなんなんだ

投稿者 ekn : 07:28 PM | コメント (0) | トラックバック

August 15, 2006

POSTした結果をXMLで取得

そういえばでPOST案件やったことなくてしらなかった…orz

LoadVars.sendAndLoad の第2引数は
ダウンロードされる変数を受け取る LoadVars オブジェクトまたは XML オブジェクト。

var myLV = new LoadVars();
myLV.username = "hogehoge";
myLV.email = "hoge@hoge.com";

var replyXml = new XML();
replyXml.ignoreWhite = true;
replyXml.onLoad = function(){
trace(this)
}

myLV.sendAndLoad("http://hogehoge.com/hoge.php",replyXml,"POST");

XML Objectに送信データをプロパティにつけてsendAndLoadでいけるもんだと思ってた;
XML.sendAndLoadは、 XML ドキュメントの送信になっちゃうのね;

投稿者 ekn : 11:32 AM | コメント (0) | トラックバック

August 14, 2006

Flash:自分が張られているページのURLを取得

_urlでSWFのおかれているURLのパスが取得できるのだけど、
自分が張られているHTMLページのURLって取得できない;

でもv8なら、なんの手助けなしにいけちゃう。
getURLでJSを宣言して、ExternalInterface.callで戻り値のゲット!

//getURLを用いてJSを宣言
getURL("javascript:getLocation=function(){return window.location.href;};void(0);");

//ExternalInterfaceを用いて宣言したFunctionを呼び出し戻り値を得る
var myBaseUrl = String(ExternalInterface.call("getLocation"));

//javascript alertを用いて結果を見てみる
ExternalInterface.call("alert",myBaseUrl )

上の例だと、myBaseUrl に正しく値が入ってこない。
他もそうなのかどうかわからないけどIEの場合はそう。
JSの宣言と、呼び出しが同時だとダメっぽく、setIntervalなどを用いて間隔をとって呼び出さなくちゃダメっぽい!

//getURLを用いてJSを宣言
getURL("javascript:getLocation=function(){return window.location.href;};void(0);");

var siid = setInterval(function(){
clearInterval(siid);

//ExternalInterfaceを用いて宣言したFunctionを呼び出し戻り値を得る
var myBaseUrl = String(ExternalInterface.call("getLocation"));

//javascript alertを用いて結果を見てみる
ExternalInterface.call("alert",myBaseUrl )
},1); // 1msで十分ぽい / 24fps でテスト

その他注意が必要なのは、
・ExternalInterfaceの戻り値が受け取れるようなソースで貼り付けられていること
これにつまづかないように

この手法つかえば、なんでもありになりそう。

投稿者 ekn : 04:29 PM | コメント (0) | トラックバック

July 29, 2006

cacheAsBitmap設定時の特徴:透過処理

透過したときに、内部のオブジェクトの透過処理がかわってくるんだね。
複雑なベクトルデータを透過するときの重なった部分が汚くなっちゃうのやつを回避できるんだ
名称未設定-1.gif

投稿者 ekn : 01:13 PM | コメント (0) | トラックバック

July 24, 2006

setMask()で透過値が有効なマスク処理

通常、透過の設定がされたMovieClipでsetMask()しても、
マスクに透過情報は反映されず、描画エリアでマスクされちゃうんだけど

マスクターゲットMovieClip、マスクMovieClipともに、
・ランタイムビットマップキャッシュを使用するにチェック
または
・cacheAsBitmap = true
しとけば、マスクMovieClipの透過値が適応されてマスクされるぞ~
しらなかった…orz、、、

鏡面効果処理をBitmapData.threshold を使ってやろうとしてて
透過PNGのエッジ部分がパリパリ、というか黒くなっちゃってこまってたんだけど
これでイケそうだorz

これって逆に必要の無い部分で、、、たとーばー
オーサリング時にマスク用MCが邪魔だからって、透過させておいて、、、
偶然にも、CABちゃってて、透過Maskになっちゃうって、アレ?
みたいなことにもなりかねない。
意識的にイコー

投稿者 ekn : 12:41 PM | コメント (0) | トラックバック

July 19, 2006

cacheAsBitmap 正直どういうときに使うと有効なのかわからない…;

んです。

「高速に何かを動かすときにいい感じに動かせる」的にしか思ってない;
とりあえずtrueにしとけ的な…;

がしかし、unknownnotables.blogさんの
cacheAsBitmapのやってはいけない10箇条をみてみると、
変更したいプロパティーが全滅orz

とりあえずでtrueにしてたら逆効果だったなんてことになったらかなりイヤ。

ん~~。
座標(_x,_y)プロパティが残ってる。
じゃ、やっぱ、移動?

cacheAsBitmap が実装されてサンプルに
コンポーネントを高速に動かせるとか
あんまやんねーよ的なサンプルがあったよなぁ。

リファレンスには
「ベクターコンテンツの複雑さに応じて大幅に速くなる可能性があります。 」
それはなんかわかるきがする。
ボタンってのはどうかとおもうけど
「(MCの)その内容がほぼ静的で、拡大や縮小、回転が頻繁に行われないボタンに最適です」
だって。
やっぱ拡大や縮小、回転はあんまあかんのかな(頻繁の場合w)

あと、BitmapData.drawした場合と異なるの?とか

ん~Flashえんじにあの僕としてはちゃんとそれを何かと理解しなきゃならないのに…

cacheAsBitmapでググルり日本語で絞ると
とYUGOさんのブログが一番上にきて、
ダイナミックテキストフィールドのスクロールについて書かれてるけど
こういうのもイイよね

CABル。フフっ

投稿者 ekn : 11:32 PM | コメント (0) | トラックバック

ExternalInterface.call Internet explorerでnullが返ってくる件

IEで戻り値がnullの件、allowScriptAccessはalwaysにしたのに、FFでは正常なのにと...

SWF貼り付けのobjectタグのID名に "external"を入れると動作する。
external、だけじゃだめで、*external or external* or *external* ってこと(*は任意の文字列)
変な仕様;

たとえばこんな感じ
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100" height="100" id="aexternal" align="middle">
<param name="allowScriptAccess" value="always" />
<param name="movie" value="test.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="test.swf" quality="high" bgcolor="#ffffff" width="100" height="100" name="" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

とりあえず解決。次に進めそう、くはぁorz

追記:
ん~これが確実な方法ではないよう;
追って調査。

livedocsコメントより
http://livedocs.macromedia.com/flash/8/main/00002203.html

投稿者 ekn : 12:14 PM | コメント (2) | トラックバック

June 10, 2006

ActionscriptでQRcode生成

公開されているのはJS
http://www.d-project.com/qrcode/index.html
もともとはFlash ActionScript 用につくたってかいてある。

ASでは公開してない見ただけど
仕事で必要があったらつかえるかなぁ?
仕事でつかっちゃだめかな…;

投稿者 ekn : 03:47 PM | コメント (0) | トラックバック

June 08, 2006

Actionscript 演算子

Flash ActionScript入門ノート: 演算子
http://oshige.com/flash/note/archives/2005/02/post_9.html
あんまちゃんとおぼえてね~んだよなぁ。

あとscopeも;
ClassないとタイムラインでScope結構ちがわね?

投稿者 ekn : 10:12 PM | コメント (0) | トラックバック

よさげ Flash Text Formatter v0.6

Flash Text Formatter v0.6
http://www.flashtexteditor.com/ftf/
webにASのソースのっけるときには便利そだ

行番つくけど選択コピーは問題ないし
flaが配られてるから改造して 「コピー」ボタン付けてsetClipboardするのもよしだな

投稿者 ekn : 10:24 AM | コメント (0) | トラックバック

May 24, 2006

MD5,SHA1 in ActionScript

Actionscript で文字列をMD5hashに変換する
Generator MD5 checksum in AS
http://www.nurs.or.jp/~b3/scripts/md5as/
http://flashexperiments.insh-allah.com/md5.html

Generator SHA1 in AS
http://www.richinternet.de/blog/index.cfm?entry=8C8B659E-0858-D8EC-61DECA2DFF048623

投稿者 ekn : 12:13 PM | コメント (0) | トラックバック

February 24, 2006

MovieClip.getNextHighestDepth()

FLashドキュメントに
「SWF ファイルにバージョン 2 のコンポーネントが含まれている場合は、MovieClip.getNextHighestDepth() メソッドではなく、バージョン 2 のコンポーネントの DepthManager クラスを使用します。 」

これって、今コンポーネントを使ってなくても
あとから使う場合は、先にgetNextHighestDepth()を使ってたら問題おきるわけで
全部書き換えなきゃいけない?

この件はこのへんだったきが
http://f-site.org/articles/2004/12/12021122.html

・MCを消さないならいいのか?
・swapDepths()つかってMCを消せる深度に持ってきてから消せばいいのか?

って、swapDepths()つかったらいけた。

しかも、オーサリング時に配置したMovieClipはdepthが、-16384から1048575 の範囲外に配置されるだけであってswapDepths()つかって範囲内に変更すればremoveMovieClipで消せるんだ。
しらなかったorz

投稿者 ekn : 12:23 PM | コメント (0) | トラックバック

February 17, 2006

Actionscript:半角全角(1byte2byte文字)の切り分けてobjectに

シンプルなutilネタ

Stringを渡すと1byte2byte文字に分けてArrayで返す。

”あああaaああa”なら結果は

[
{text:"あああ",mode:2},
{text:"aa",mode:1},
{text:"ああ",mode:2},
{text:"a",mode:1}
]



function string2Object(_text:String):Array{

if(_text == undefined) return undefined;

var _textGroupCnt:Number = 0;
var _tmpNum:Number = 0;
var _byteMode:Number;

var _resArray:Array = [];

var textLength:Number = _text.length;
for (var i=0;i var _o = _text.charCodeAt(i);

if (_o>0xff) _byteMode = 2;
else _byteMode = 1;

if(i == 0){
var _tmpbyteMode =_byteMode;
}else if(_byteMode != _tmpbyteMode ){
var _textStartCnt = _tmpNum;
var _textCnt = i - _textStartCnt;
var tmpObj = {text:_text.substr(_textStartCnt,_textCnt),mode:_tmpbyteMode};
_resArray.push(tmpObj);
_tmpNum = i;
_tmpbyteMode = _byteMode;
_textGroupCnt++;
}
if(i == textLength - 1){
var tmpObj = {text:_text.substr(_tmpNum),mode:_tmpbyteMode};
_resArray.push(tmpObj);
}
}
return _resArray;
}

投稿者 ekn : 10:32 AM | コメント (0) | トラックバック

January 25, 2006

livedocsのFeedbackのRSS

Flash8のlivedocsのFeedbackの更新状況をRSSで出力してる。
http://www.macromedia.com/cfusion/rss/livedocs.cfm?product=flash&version=8_jp&book=main&full=true
チェックしておくといいことありそうだ!

投稿者 ekn : 05:31 PM | コメント (0) | トラックバック

January 24, 2006

AS2 setTimeout(実行する関数,間隔,関数に渡す引数)

setTimeout(実行する関数,間隔,関数に渡す引数)
http://www.fumiononaka.com/TechNotes/Flash/FN0512001.html指定ミリ秒後に関数をたたく関数。
8じゃなくてもsetIntervalを使えば独自で作れそう。

clearTimeout(setTimeoutした時の参照)
http://www.fumiononaka.com/TechNotes/Flash/FN0512001.html
setInterval同様setTimeoutの参照を引数に渡して止める。
そういえば
new setTimeout();
じゃないし、importも不必要
AS3になったらどこに集約されるんだろ

なんとなく当分 setIntervalつかうけど…
そういえばwatchまだ一回も使ったこと無い orz 大丈夫かなore

投稿者 ekn : 06:11 PM | コメント (0) | トラックバック

SharedObject Editor Viewer SOLVE(メモ)

SEPYにつてるShared Object Reader
http://www.sephiroth.it/python/solreader.php?column=1
こちらは読むだけで書き込み不可能だけど
SOLVE なら読み書きできる。

FlashのSharedObject .solデータの読み書きできるソフト
http://solve.sourceforge.net/

投稿者 ekn : 05:19 PM | コメント (0) | トラックバック

December 20, 2005

FLASHでEUC・S-JIS・UTF-8のXML読込

UTF-8かS-JISしか読めないんですけどRSSリーダつくるのにどうすんの?
ってことで

まぁ、わりとRSSってほぼUTF-8だから別にいいんだけど
RSSリーダです、っていったからにはEUCは見れませんとかいうのはちょっと悲しいなとおもって調べてみたと。

Ajax + LocalConnection + FLASH で解決?

親SWF からJSを呼んでJSでXMLの取得(パースはしない)
んでJSでUTF-8に変換、 Ajaxで LC用SWFを出力しFlashVarsでXMLデータをテキストデータとして渡す
LCで親SWFにXMLデータを渡し、親はXMLに変換してパース で、いけた!!

でも、JSが外部ドメインからデータ取得できないのでローカルでの使用にしかできない;orz
しかも、クロスブラウザでいろいろかも…。
とりあえず ローカル&WIN&IEでの仕事だったので問題はなく。

あと、XMLの取得エラーを
JSで、HTTPのstatusみれそうだから、404なのかサーバーエラーなのか認識できるかも!!

投稿者 ekn : 09:43 PM | コメント (0) | トラックバック

December 19, 2005

ん~as2lib

AS2LIB OpenSource AS2 Library

のぞっこんでちゃんと勉強しなきゃ…。
英語でワカメ。
日本語で紹介いるサイトをと思って日本語検索でググってもぜんぜんでない;
naoさんのブログではいくつか紹介されていて勉強になります。

あとは、今月号のWEBDBプレス
ロギングとユニットテストについてかかれてた。
あとこれの17号でRemotiongについてかかれてるっぽい。
ちょっとみとこっかなぁ。ワカメだから。

投稿者 ekn : 10:19 PM | コメント (0) | トラックバック

AS3でBitMapDataをJPEGにエンコード

スゲ。AS2ではできないけど…;
BitmapDataが扱えるようになっても
作ったデータをポストできないのってちょっとアレだなっておもってたけど
AS3ならできるのかな?

BitMapDataをJPEGにエンコード

投稿者 ekn : 03:29 PM | コメント (0) | トラックバック