- 締切済み
flash lite 1.1容量制限内におさめたい。
96.4KBのswfファイルです。 ファイル内には、30個のボタンが3つのキーフレームに分けて配置してあります。 ↓ボタンのASです。 on(release){ getURL("http://*********************"); } 今回、そのURLが30個すべて大幅に長くなることになりました。 ============================== 【30(ボタン)×0.5KB=7.5KB】 100KBを超えてしまいます。これでは携帯で表示できません。 ============================== そこで打開策を考えました。 (1)長いURLを変数に出来るのかな? (URLの文字列はほぼ同じだったので。) そこで試したのが、 空白キーフレームにインスタンス名(s1)を付け、 (s1)のAS (変数)= "長ーいURL"; を記述。 30個のボタン達に…(今回は12個目として変数12としてます。) on(release){ call(s1) getURL("変数12"); } です。 失敗です。(URLは"変数12"と表示されてもリンクはしませんでした。) (1)変数はURLに成りうるのか? (2)変数は3つのキーフレームで使いまわせるのか? (3)容量は抑えられのか? です。 何卒よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#2 (#1) です。 すみません。 #2 では,ご質問が Flash Lite 1.1 だと言うことをすっかり忘れていました。 普通の Flash と Flash Lite 1.1 とでは文字列加算演算子が違います。 ページ番号 が 5 であるとする場合 getURL(h + c + 5 + p + s); ↓訂正↓ getURL(h add c add 5 add p add s); です。
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#1 です。 #1 の補足の後半がわかりません。 補足の前半なら少しは意味がわかります。 #1 でも書きましたように 「変数」 と 「文字列」 の区別をつけることが大切です。 ~#1より~ > url1 = "abcdefghijklmn"; > > と定義した場合, > _root にあるボタンには, > > on (release) { > getURL(url1); > } ↓これを言いかえると↓ 変数名 = "abcdefghijklmn"; on (release) { getURL(変数名); } ↓注意点↓ getURL("変数名"); ではありません。 --- --- --- --- --- したがってスクリプトは次のようになります。 h = "#HOSTURL################################"; c = "?c=rrrrrr&mmmm=bbbbbbbb&aaaaa_"; p = "&d=#PARAM_D#&PHPSESSID="; s = "#SESSION################################"; getURL(h + c + ページ番号 + p + s); 「ページ番号」 とは意味がわかりませんが,もし 5 でしたら, getURL(h + c + 5 + p + s); となります。
- BlurFiltan
- ベストアンサー率91% (1611/1754)
Flash Lite の前に, さらに Flash の前に, かなり方向がずれていると思います。 半角英数文字 1文字 は,素のテキストデータで何バイトでしょうか? ...... ...考え中... .. .. ... .. ... ...... ... ... ....... ... ...考え中... ..... .. はい,時間切れ。 答えは 1バイト です。 半角 英数文字 は 1バイト文字 ですから 1バイト です。 Flash の場合は, 素のテキストデータ ではなく SWF にパブリッシュ(コンパイル)されるので, さらに小さくなる場合がほとんどだと思います。 ちなみに検証です。 on (release) { getURL("a"); } と書いたボタンを30個並べた FlashLite1.1用 SWF をパブリッシュしてみましたら, 450 バイト (つまり 約0.45 KB) でした。 on (release) { getURL("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); } と書いたボタンを30個並べた FlashLite1.1用 SWF をパブリッシュしてみましたら, 498 バイト (つまり 約0.498 KB) でした。 その差は,48バイト(約 0.048KB)です。 軽量化を考えるのでしたら, こういう部分を対象にするべきではないと思います。 つまりもっと他にあるはずです。 ========================= それで,やっとこさ Flash です。 > (s1)のAS > (変数)= "長ーいURL"; > を記述。 > 30個のボタン達に…(今回は12個目として変数12としてます。) > on(release){ > call(s1) > getURL("変数12"); > } 無茶苦茶ですね。 変数は変数であって文字列ではありません。 また call 関数を使う必要性も全くありません。 _root(メインムービーのタイムライン) の フレーム1 に url1 = "abcdefghijklmn"; と定義した場合, _root にあるボタンには, on (release) { getURL(url1); } と書けば,getURL("abcdefghijklmn"); が動作します。
補足
h = "#HOSTURL################################"; c = "?c=rrrrrr&mmmm=bbbbbbbb&aaaaa_"; p = "&d=#PARAM_D#&PHPSESSID="; s = "#SESSION################################"; 厳密に言うとこの位増えます。 そして上記のように定義して、 下記のようにボタンに記述しました。 getURL("hc(ページ番号)ps"); 早速のご返答ありがとうございます。 少し、問題の意味合いが変わってしまい申し訳ございません。 URLは表示されるのですが、 "hc(ページ番号)ps"であって、 "#HOSTURL################################?c=rrrrrr&mmmm=bbbbbbbb&aaaaa_(ページ番号)&d=#PARAM_D#&PHPSESSID=#SESSION################################"; には切り替わりません。 こんな方法は可能でしょうか? 何卒よろしくお願いいたします。
補足
getURL(h add c add 5 add p add s); 頂きました。 URLを上記のように記述すると入れ替わりました! 誠にありがとうございます。 余力があれば教えてください。 現在_rootに、下記の記述がされています。 h = "#HOSTURL################################"; c = "?c=rrrrrr&mmmm=bbbbbbbb&aaaaa_"; p = "&d=#PARAM_D#"; s = "#SESSION################################"; //hが置き換えられた時、余分な#を取り除く i = length( h ); for ( ; 0 < i ; i-- ) { c = substring( h, i, 1 ); if ( c ne "#" ) { break; } } //hとcをまとめてurlとする url = substring( h, 1, i ) add c; //pが置き換えられた時、余分な#を取り除く i = length( p ); for ( ; 0 < i ; i-- ) { c = substring( p, i, 1 ); if ( c ne "#" ) { break; } } //pと"&PHPSESSID="まとめてphとする ph = substring( param, 1, i ) add "&PHPSESSID="; //spが置き換えられた時、余分な#を取り除く i = length( s ); for ( ; 0 < i ; i-- ) { c = substring( s, i, 1 ); if ( c ne "#" ) { break; } } //まとめてseとする se = substring( s, 1, i ); =========================================== そして、ムービークリップの中に配置されている、 ボタンに(ページ番号を5とする)、 on(release){ getURL(_root.url add "5" add _root.p add _root.se); } と記述しています。 そうすると携帯でURLを観た時に、 最後の_root.seが『2』と表示されます。 (長々と申し訳ございません) 目標は下記の定義を一つにまとめて何処にでも、呼び出したいのです。 h = "#HOSTURL################################"; c = "?c=rrrrrr&mmmm=bbbbbbbb&aaaaa_"; p = "&d=#PARAM_D#"; s = "#SESSION################################"; もしアドバイスがあれば、 何卒よろしくお願いいたします。