ActionScript 誰かが物凄い勢いで解答するスレ28

このエントリーをはてなブックマークに追加
949Now_loading...774KB:2011/06/29(水) 01:10:01.59 ID:8YCs9v0v
var account = "http://api.dan.co.jp/twicon/miyasuke1";
var loader1 = new MovieClipLoader();
loader1.loadClip(account, _root.mc);
var loader2 = new MovieClipLoader();
loader2.loadClip(account, 1);
これだとpngで大失敗。
950Now_loading...774KB:2011/06/29(水) 01:12:45.56 ID:8YCs9v0v
Playerが7でも_level1以上なら読み込まれる
つまり2バイト文字が云々ってのが原因か
951Now_loading...774KB:2011/06/29(水) 01:17:15.22 ID:0hTwoMfY
>>950
もしかしたら、そのpngファイルがちょっと壊れてるとか?
他のpngファイルでも同様なのか検証してみた?
952Now_loading...774KB:2011/06/29(水) 01:17:56.57 ID:8YCs9v0v
ローカルのPlayerは10になってるんですけど
953Now_loading...774KB:2011/06/29(水) 01:19:36.08 ID:8YCs9v0v
他のpngも片っ端から駄目でした
954Now_loading...774KB:2011/06/29(水) 01:23:28.24 ID:0hTwoMfY
>>953
もし同じ方法で作られたpngならその方法やツール、そうでないなら
使ってるPCとかHDDとかアカウントとかFlashとか、なにかそちら独自の環境に起因する
問題じゃないか?

サーバにアップしても同様か検証してみれば、また何かわかるかも
955Now_loading...774KB:2011/06/29(水) 01:29:16.83 ID:8YCs9v0v
和塩に上げてみたけど、やっぱりjpgの方しか読み込まれませんね
956Now_loading...774KB:2011/06/29(水) 02:09:42.13 ID:dYRrKThO
最近AS3.0始めた者です

どうにもよく分からん
Flashlite1.1は使えるし、モバゲーみたいなソーシャルアプリも開発してんだけど
今後スマフォなんかにも対応したいと思っているんで、やり始めたって感じですが
どうにもしっくり来ないんですよね
一応2までは習得しています

なんかいい覚え方ないでしょうか?
957Now_loading...774KB:2011/06/29(水) 02:35:37.06 ID:0r4aqu6L
>>956
語呂合わせとか?
ねーよwwwwww

2.0とは似てるっちゃ似てるけど結構別物
2.0でもクラスベースでやってたなら楽かもね
とりあえずActionScript初心者wikiがおすすめ
958Now_loading...774KB:2011/06/29(水) 05:53:28.34 ID:2f7G0vYz
三国志みたいなシミュレーションゲーム作る時ってクラスの設計は
Worldクラス、Nationクラス、Regionクラス、Bushoクラス
みたいな感じでいいんですか?
なんか参考になるサイトがあったら教えてください
959Now_loading...774KB:2011/06/29(水) 07:05:33.04 ID:2f7G0vYz
えーっと、今までは一つの配列オブジェクトで world.nation.region みたいに
世界の下に複数の国家があって、国家の下にさらに複数の地域があってみたいな
ツリーで管理してきたんですけど、クラスを使って管理する場合はどうしたらいいんですか?
Worldクラス一つ作って、そこで一つの配列オブジェクトで管理するのってよくないですよね?
でもわけるとセーブする時とか面倒くさそうです。
960Now_loading...774KB:2011/06/29(水) 10:26:02.95 ID:Pso49myN
>>856
ラベルを付ける
961960:2011/06/29(水) 10:27:28.91 ID:Pso49myN
書き込んだらどっさりレス増えて、解決済みにレスしてた俺おわた
962Now_loading...774KB:2011/06/29(水) 10:33:36.84 ID:0r4aqu6L
>>958
俺なら結構細かくクラス化しちゃう
同じファイルにたくさん書きたくない
いいのか悪いのかはしらんけど
963Now_loading...774KB:2011/06/29(水) 11:02:23.58 ID:2f7G0vYz
例えばゲームでplayerクラス作って、配列変数に1000個ぐらいのインスタンスを作った時、
playerの情報をセーブ・ロードするのってどうすればいいんですか?
playerインスタンスの配列変数とは別に、player情報の配列変数を作って保存するんでしょうか?
964Now_loading...774KB:2011/06/29(水) 11:18:48.62 ID:0r4aqu6L
ファイルやsoに保存するって意味なら
俺は変換クラス作ってインスタンスから各情報をのプリミティブ値を抽出してそれらだけで再現できるようにしてそれを保存するよ
965Now_loading...774KB:2011/06/29(水) 11:39:36.32 ID:8YCs9v0v
昨日pngが読み込めないって喚き散らしてた者だけど、
http://pickles-the-frog.cocolog-nifty.com/blog/flash/index.html
これ読んで改良したのをswfuploader上で再生したらpngも読み込めた。
ただローカルで再生すると「潜在的に危険な動作が云々」で読み込めなくなった
966Now_loading...774KB:2011/06/29(水) 11:52:32.85 ID:8YCs9v0v
http://swfup.info/view.php/0856.swf
なんか一回読み込んだ画像はやけに早く表示されるんだけど、
読み込む度にメモリ喰ったりしてんのか?
967Now_loading...774KB:2011/06/29(水) 12:02:56.74 ID:2f7G0vYz
>>964
レスありがとうございます。なるほど・・・でもクラスで使う変数が百個とか多くなると
セーブもロードも面倒じゃないですか?
968Now_loading...774KB:2011/06/29(水) 12:03:41.21 ID:Qn8jhwjB
>>958
何かのいくつかの処理で「同じ変数を頻繁に使う」メソッドや関数を一つのクラスにまとめるのが基本じゃないかな
「細かくクラス分けする」ってのは他の作品にも流用が効く処理なら便利
969Now_loading...774KB:2011/06/29(水) 12:14:05.82 ID:Qn8jhwjB
>>959
その考え方で正しいと思うよ おれならデータベースクラスとして1個にまとめる
データベースなら1つのクラスが膨大になるのは仕方が無い セーブロードも1個のオブジェクトで済むし
クラスファイルが大きくなるのがいやならxml等でデータベースとして扱う
970Now_loading...774KB:2011/06/29(水) 12:20:09.37 ID:0r4aqu6L
>>967
セーブもロードもそんな頻繁にするもんじゃないじゃん
操作したりなんか変更あるたびに倍の量保存するよりはセーブロード時にバーっと作っちゃたほうがメモリも処理もいいかなと思って
多少時間かかってもセーブロード時ってNow Loading... とかしても許されるかんじじゃん

現在の状態をByteArrayにして返す、ByteArrayから状態を復元するDataManagerクラスと
ByteArrayを受け取って保存する、ファイルを読み込んでByteArrayを返すIOManagerクラス
みたいなかんじにしてる
971Now_loading...774KB:2011/06/29(水) 12:51:36.90 ID:B80sYTnu
AS2使いに朗報。
googleがやってくれました。
http://gigazine.net/news/20110629_google_swiffy/
972Now_loading...774KB:2011/06/29(水) 12:52:51.25 ID:2f7G0vYz
ああー、根本的に勘違いしてたのかもしれません・・・、
今Player()クラスのインスタンスをplayer:Arrayに100個作って保存して
playerをsharedObjectに突っ込んでみたらセーブもロードもできました。
インスタンス変数とかもちゃんと保存されてます。
クラスのインスタンスって普通に配列オブジェクトみたいにSOに保存できるんですね。
この方法でセーブロード行うのは何かまずいのですか?
973Now_loading...774KB:2011/06/29(水) 13:32:07.94 ID:lTaIbTSa
AS3でURLLoaderでテキストファイルを読み込んでるんですが
読み込み完了イベントの時に以下の処理をしていて、変な動作をしています。

var arr:Array = ss_loader_obj.data.toString().split(/\n/);
for(var i:int=0; i<arr.length; i++)
{
trace(i + ":" + arr[i]);
}

txtファイルの中身は
001.jpg
002.jpg
003.jpg
なのですが、上のプログラムの出力結果が
0:001.jpg
002.jpg
003.jpg
となってしまいます。i:がループの2回目から消えているのですが何故なんでしょうか???
974Now_loading...774KB:2011/06/29(水) 13:51:24.69 ID:0r4aqu6L
>>972
クラスインスタンスまるごとよりは自分で必要なプリミティブ値を管理したほうが容量減ると思って俺はそうしてる
そのやり方でも普通にいいと思う


>>973
arr.lengthが1の時はきっとそう出力されるよね
つまりちゃんとsplitできてないと予想
とりあえずsplitしたあとtrace(arr.length)してみたらどうなる?
975Now_loading...774KB:2011/06/29(水) 13:51:31.59 ID:HKWpA4E/
>>972
確認して、ちゃんとセーブ出来てるならいいんじゃないかな?
作りによってオブジェクトそのままだと出来ないのもあったりするから注意だけど。
976Now_loading...774KB:2011/06/29(水) 14:11:24.04 ID:0hTwoMfY
>>972
やり方によっては、ゲーム内データにsharedObject参照が残ってて
どちらかの変更がそのままもう片方に反映されちゃう、ということもあるので
そのへんの注意は必要かも
977Now_loading...774KB:2011/06/29(水) 16:20:56.86 ID:lTaIbTSa
>>974
arr.engthは3でした。
どうやら調べてみると、002.jpgと003.jpgの頭に
改行かなんか分からないものが入ってるっぽいです。
それが原因のような気がするのですが、これは一体・・・。

trace("test");
trace(arr[0]);
trace(arr[1]);
trace(arr[2]);

の出力結果が

test
000.jpg

001.jpg

002.jpg

みたいになります。。。
978Now_loading...774KB:2011/06/29(水) 16:30:35.40 ID:Y1tU/OJq
WINで作ったテキストファイルなら改行コードは\r\nだよ
979Now_loading...774KB:2011/06/29(水) 16:36:18.62 ID:lTaIbTSa
>>978
ぬわーそうでしたか・・・。
\r\nで解決できました。ありがとうございます!!
980Now_loading...774KB:2011/06/29(水) 16:48:49.14 ID:lTaIbTSa
AS3でLoaderを使って外部swfを読み込んでいるのですが、
読み込んだswfのwidthとheightが、読み込み元のステージの大きさになってしまいます。

var loader_swf:Loader = new Loader();
var url_swf:URLRequest = new URLRequest("slideshow.swf");
var info:LoaderInfo = loader_swf.contentLoaderInfo;
loader_swf.load(url_swf);

info.addEventListener(Event.COMPLETE, swfLoaded);
function swfLoaded(e:Event):void{
slideshow.addChild(loader_swf);
trace(loader_swf.loaderInfo.width + ";" + loader_swf.loaderInfo.height);
}

slideshow.swfは800*480で作っているのにも関わらず、
trace結果は800*500(呼び出し元のステージの大きさ)になってしまいます。
swfを元のファイルの大きさのまま呼び出すことは不可能でしょうか?
981Now_loading...774KB:2011/06/29(水) 16:51:52.77 ID:0hTwoMfY
>>980
普通は元のサイズで読み込まれる
slideshowあたりが、拡大縮小されて配置されてるんじゃないの?
982Now_loading...774KB:2011/06/29(水) 16:58:49.83 ID:lTaIbTSa
>>981
slideshow.flaのパブリッシュ設定で
HTMLのサイズをピクセル指定で800px*480px、
伸縮を拡大・縮小なしに設定しています。

まぁこっちはHTMLのほうの指定なのであまり関係なさそうですが・・・。
パブリッシュ設定のFLASHのタブには特にステージの大きさとか伸縮とかの
設定はなさそうですが・・・何か心当たりはありませんでしょうか?
983Now_loading...774KB:2011/06/29(水) 17:12:15.23 ID:2f7G0vYz
>>974-976
レスどうもです。この方法が簡単そうなので今はこれでやってみます。
984Now_loading...774KB:2011/06/29(水) 17:28:44.68 ID:lTaIbTSa
ちなみに、slideshow.swfは拡大されていないので、
読み込み元swfのステージの中心に原寸サイズで表示されます。

(ムービークリップslideshowはステージの左上(0,0)に配置している空のムービークリップです。)
985Now_loading...774KB:2011/06/29(水) 18:14:39.00 ID:0hTwoMfY
>>984
すまん、ちょっとよくわからんのだが、slideshow.swfが拡大されて表示されてるわけではないの?
slideshow.swfのステージheightが400で、表示サイズも400なのに、trace()すると500になってるの?
986Now_loading...774KB:2011/06/29(水) 20:14:08.66 ID:66NL31fd
DisplayObjectのwidthとかheightってset可能だけど、結局中身の右端・下端の値になるんだよな
結構ハマったりするから要注意
987Now_loading...774KB:2011/06/29(水) 20:40:20.69 ID:/IIvD4Go
「ある1つの関数の中からしか参照できない変数」を作りたいんだけどどうしたらいいんだろう

クラス内で宣言したらクラス内の他の関数からも参照できるし、
関数の初めで var hoge:int=0; みたいにローカル変数として定義したら実行するたびに初期化されるから
無駄が多そう&前回の内容を引き継ぐ処理ができないから不便。他に何か方法ないかな?

988Now_loading...774KB:2011/06/29(水) 20:56:49.30 ID:0r4aqu6L
>>987
ひとつの関数もったクラスにしちゃう
クロージャ利用する
989Now_loading...774KB:2011/06/29(水) 20:58:17.28 ID:/JGnth1J
>>987
他からアクセスしないように気をつける
990Now_loading...774KB:2011/06/29(水) 21:07:12.30 ID:0r4aqu6L
最近流れ速いし次スレたててくるわ
991Now_loading...774KB:2011/06/29(水) 21:15:35.76 ID:tcsXfPs9
>>985
なので、slideshow.swfのオブジェクトの外側に白色の空白ステージ(Wordでいう余白みたいなもの)がある感じになってます。
で、(0,0)がslideshow.swfの左上ではなくて、余白の左上なので、なんか表示がずれてしまいます・・・。
ずれてる分の座標を、スクリプトでずらして表示させれば応急処置になるんですけど、
どうしても気持ち悪いのでどうにかしたいです。。。
992Now_loading...774KB:2011/06/29(水) 21:20:40.15 ID:0r4aqu6L
ActionScript 誰かが物凄い勢いで解答するスレ29
http://hibari.2ch.net/test/read.cgi/swf/1309349827/
993Now_loading...774KB:2011/06/29(水) 21:21:17.51 ID:Qp59D8+m
どうやらようやくActionScript3.0にも風が向いてきたようだな・・・胸が熱くなるな
994Now_loading...774KB:2011/06/29(水) 21:23:53.96 ID:/IIvD4Go
>>988
>>989
ありがとう。
995Now_loading...774KB:2011/06/29(水) 21:25:21.85 ID:0r4aqu6L
scriptって名前がなんかショボいイメージでイマイチプログラミング言語の仲間入りできてない気がする

>>971もあるしiPhone、Android、Stage3D、と風は吹いてる
996Now_loading...774KB:2011/06/30(木) 00:04:24.17 ID:WKrYT5hF
SingletonにEventDispatcherの変数作ってそこ監視したりイベント送れば複雑な構成でも自由に行き来できる
という方法が便利で最近使うんだけどやっぱだめかな?
997Now_loading...774KB:2011/06/30(木) 00:28:49.32 ID:heJvlnn0
>>996
それはたぶん、MVCアーキティクチャのC(controller)なんじゃないだろうか。と思う。
998Now_loading...774KB
クラスAからBにb()やらせたいときは
Aで
Singleton.eventReciever.dispatchEvent(new Event("byareyo"));

Bで
Singleton.eventReciever.addEventListener("hoge",b);

みたいな感じね

>>997
調べてみたけどさっぱりわからん
デザパタって意外と自分で思いついて使ってるもんだよね

どこからでもアクセスできちゃうってオブジェクト指向的にダメなんだろうか