Archives

You are currently viewing archive for July 2006
カテゴリ: FLASH(AS2)
投稿者: terada
ウェヴブラウザを閉じる場合
getURL("javascript:window.close()");


↑これしかないのかと思っていたら、こういう方法もあった↓

FlashPlayerを閉じる場合
fscommand("quit");
カテゴリ: FLASH(AS2)
投稿者: mio
ダイナミックテキストのletterSpacingの調節についてですが、意外と苦戦したのでメモしておきます。

たとえば、test_TFという名前のTextFieldオブジェクトがあって、その中の文章のletterSpacingを変えたいとします。

このとき、以下のようなスクリプトを実行するとletter spacingを変えることができます。

var test_TF:TextField;

test_TF.text = "abcd";

function setLetterSpacing()
{
var format:TextFormat = new TextFormat();
format.letterSpacing = 2;
test_TF.setTextFormat(format);
}

setLetterSpacing();


が、しかし!!!
これで安心してはいけません。

ここで、このテキストの中身を操作すると、
また元通り、letterspacingが0に戻ってしまうのです。

なので、
test_TF.text += "1234";
といったようにテキストの中身を変化させたら、そのあとに、もう一度、letter spacingを設定しなおさないといけないようでした。

上記のプログラムでテキストフォーマットの設定部分を関数にしていたのはそのためです。

test_TF.text += "1234";
setLetterSpacing();

みたいな感じで使いましょう。
var format の部分は、関数の外で定義した方が賢いような気がしますが、とにかくテキスト変更のあとに、もう一度テキストフォーマットを再設定しましょうということで。

もし他にいい方法があれば是非ご教授ください。

カテゴリ: FLASH(AS2)
投稿者: terada
 「sharedObj」というものの存在は知っていたが、使えていなかった。以前少し使ってみた時は、保存してるはずなのにどこにもファイルが見つからなくて、結局あきらめてしまっていた。
 うまくいかなかった原因は、sharedObjのことを『Flashがローカルに保存できるファイルの形式』と捉えていたのでうまくいかなかったようだ。ちゃんと調べてみると、何てことはない。sharedObjは『Flash版Cookie』だった。例えば、

http://www.karappo.net/A/test.swf

のようなアドレスに置かれたSWF内で


var mySO = SharedObject.getLocal("mySO");


などと、sharedObjが呼び出されると、ローカルの下記フォルダのsharedObj(.solが拡張子)
が読み込み、もしくは作成される。この時の保存先は、


> Macの場合
User/Library/Preferences/Macromedia/Flash Player/#SharedObjects/
TSGAQQ6S
/www.karappo.net/A/test.swf/mySO.sol

> Winの場合
C:\Documents and Settings/User/Application Data/Macromedia/Flash Player/#SharedObjects/
GUW2QVQB/www.karappo.net/A/test.swf/mySO.sol

注意:Windowsの場合、「Application Data」は隠しフォルダになっているのでメニューバーの「ツール」→「フォルダオプション」→「表示」で「全てのファイルとフォルダを表示する」にチェックしておかないと、見えません。

 TSGAQQ6SGUW2QVQBの部分は環境によって違うみたい。その後に続く階層がそのままオンラインの階層関係と一致している。同じSWF内で別の名前のsharedObjを呼び出すと.../test.swf/内に追加される仕組み。試しに自分の環境を見てみると、意外と知らないうちに保存されている(↓図)。ローカルのSWFからも..#SharedObjects/GUW2QVQB/localhost/以下に保存される。

folder

まさに、Cookie(しかも簡単!)今までは「ローカルに保存」=「SWFと同じ階層に保存」と、何故か完全に勘違いしていたのだった。


実際に書き込む時、参照する時は、


mySO.data.○○ = △△;
□□ = mySO.data.○○ ;

のように書く。
普通は終了時に書き込まれるらしいので、即時書き込みしたい時は、

mySO.flush();

と書く。