e-jiのBlog

TRPGとエロをこよなく愛する作者が趣味に走った作品ばかりを公開しています。
蒼空のフロンティアプラストでイラストレーターをやっています。
pixivページ TINAMIページ

actionscript3.0

ダイナミックテキストにグラデーションをつける。

テキストにグラデーションをつけることはできないので本来はテキストを分解してからグラデーションを塗るのが本来のやり方なんだが、ダイナミックテキストで可変のテキスト内容に対してグラデーションをつけようと思ったらそうもいかない。
んで、しょうがないのでマスクを使ってグラデーションをつけてみる。

mask_mc.cacheAsBitmap=true;
text_mc.cacheAsBitmap=true;
text_mc.mask=mask_mc;

mask_mcは上から下に向けてアルファが100から0になるグラデーションマスク
text_mcはダイナミックテキストを内包したムービークリップ
こうすると上から下に向けて文字が消えていく
このままだと下の方がスケスケの文字になってしまうので、text_mcの下にもう一枚ダイナミックテキストを重ねる。
(当然こちらのダイナミックテキストは上に重なっているダイナミックテキストと色を変える)
これでダイナミックテキストのままグラデーションのかかった文字が作れる。
テキスト内容を変えたい場合には両方を操作しなければならないので手間がかかるうえに、もっと複雑なグラデーションをかけようと思ったらテキストフィールドがいくつも必要になるのでもっとスマートな方法がないものかなぁとは思うけど

xmlを読み込んで属性を取得

はまったのでメモ・・・しかもネットや本の解説がよくわかってないという。

<?xml version="1.0" encoding="UTF-8"?>
<eventlist>
<event id="001" date="2011/04/11" img="sample1.png" txt="お知らせ"
link="http://www.xxxxxxxxxx.com/" />
</eventlist>


上記のようなsample.xmlというファイルがあるとして

var event_loader:URLLoader=new URLLoader(new URLRequest("sample.xml"));
event_loader.addEventListener(Event.COMPLETE,CompleteHandler);
event_loader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);


private function eventComplete(e:Event):void {
var my_xml:XMLList=new XMLList(e.target.data);
trace(my_xml.child("event").attribute("date"));
}
で属性「date」が取得できた。

よくわからんかったというかはまったのが
trace(my_xml.child.attribute("date"));
では取得できないところ。
本やネットの情報ではmy_xml.attribute("属性名")やmy_xml.attributes()ですべての属性にアクセスできるみたいに書かれてたんだがうまくいかなかった。
xml関係はもうちょっと理解を深めないと行かんなあ
続きを読む

LocalConnectionでswf間のイベント受け渡し

swfからswfへ値を渡すときなどに使う。

送信側
import flash.display.Sprite;
import flash.net.LocalConnection;

var send_lc:LocalConnection= new LocalConnection();
send_lc.addEventListener(StatusEvent.STATUS,onStat);
send_lc.send("sestuzokumei","kansuumei","渡す内容");
//ローカルコネクションでsestuzokumeiの接続を使って"渡す内容"
をkansuumeiに渡して実行。
function onStat(e:StatusEvent):void {
//ローカルコネクションの成功失敗のステータス
switch (event.level) {
case "status":
text1.text="成功";
break;
case "error":
text1.text="失敗";
break;
}
}

受け取り側
import flash.display.Sprite;
import flash.net.LocalConnection;

var receive_lc:LocalConnection= new LocalConnection();
receive_lc.client=this;
receive_lc.connect("sestuzokumei");
//送信側の接続名と合わせる。

function lcHandler(msg:String):void {
text1.text=msg;
}

ランダムな値の取り方

同じようなこと繰り返し調べたりするはめに陥ったりするので、備忘録をつけようと思い立った今日この頃。
んで、記念すべき最初の1回目はランダムな値の取り方

Math.random()で0 以上 1 未満のランダムな浮動小数の値が取れるのでそれを整数に変換する。
整数への変換は引数の数値の小数点以下を切捨てた整数が返ってくるMath.floor()を使う。

6面体ダイスのサイの目を取るならMath.random()を6倍して小数点以下を切り捨てればいいわけなので
Math.floor (Math.random () * 6) + 1
でOK。

値の範囲を変えるなら
function xRandomInt (nMax, nMin) {
// nMinからnMaxまでのランダムな整数を返す
var nRandomInt = Math.floor(Math.random()*(nMax-nMin+1))+nMin;
return nRandomInt;
}
で関数を作っとく。
作品一覧