5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :Now_loading...774KB:2011/06/29(水) 21:17:07.66 ID:0r4aqu6L
AcitonScriptのことなら
初歩的な質問でもなんでもおk

見れない、保存したい、flashを作りたいはスレ違い
下記の関連スレ、超基本的な質問へ。

●質問する時は自分の環境を書く(AS2,AS3の別も)
●質問はものすごい勢いじゃなくて結構
●できるだけコードも示す
●まず自分がやりたいことを明確に書く。そのために試してみた処理を書く

前スレ
ActionScript 誰かが物凄い勢いで解答するスレ28
http://hibari.2ch.net/test/read.cgi/swf/1302831971/

関連スレ
Flashの超基本的な質問はここでしろ! part42
http://hibari.2ch.net/test/read.cgi/swf/1305783143/
※初心者は↑こちら推奨

ActionScript ライブラリ総合
http://hibari.2ch.net/test/read.cgi/swf/1308658905/

918 :Now_loading...774KB:2011/12/07(水) 10:49:02.53 ID:pz862A5x
>>917
もう少し具体的に書けない?
自分で作ってるからその説明で自分は納得できても、
他人には想像しかできないし、それが正しいかもわからないし。

画面(ビュー)遷移があるアプリで、その終了時の遷移先を保存しておきたい。

と捕らえたんだが、どう?
しかし、その内容で>>913で解決する意味がわからない。
>今後ビューが増えたりした時のためにメンテナンス性を考えました。
というけど、現在のビューの管理がどうなっているのかがわからないけど、
外部に定義したファイルを読み込んで、ビューを表示したいってことなんかな??

919 :Now_loading...774KB:2011/12/07(水) 11:11:13.92 ID:Q2xmPy12
やりたいとこはなんとなく分かるけど、時代に逆行してるんだよなあ。
でもJavaScript関係でJSONとかそのまま使ってるのもあるからなあ。

ASでやるなら適当なObjectかDictionary作って、配列アクセス演算子だろうなあ。

var o:Object ={};
o["hoge"] = 10;
trace(o.hoge);
trace(o["hoge"]);

for(var key:String in o){
trace(key);
trace(o[key]);
}

920 :Now_loading...774KB:2011/12/07(水) 11:13:14.05 ID:gOVJrA8s
まあObjectやDictionaryで文字列を変数名に使うようなことはできると思うけど、

やっぱり配列使おうぜ

921 :Now_loading...774KB:2011/12/07(水) 11:34:56.29 ID:pz862A5x
やりたい事わかる?
ビューを保存するのに、そのビュー内で定義した変数名を
動的に保存する必要がわからないんだが。

そのビューが動的に生成されるにしても、
定義は動的ではないだろうし。

922 :Now_loading...774KB:2011/12/07(水) 11:47:47.30 ID:Q2xmPy12
シリアライズして復元したいんでしょ。

923 :913:2011/12/07(水) 13:36:35.89 ID:ozrGkexV
ごめんなさいみなさん色々ありがとう。
先ほどから出先なのでコードが載せれません。
また帰ってから返信させていただきます。

924 :913:2011/12/07(水) 14:56:54.95 ID:ozrGkexV
シリアライズではないんですごめんなさい。
そうですね読み返して見るとあの文章ではそう思われても不思議はないですね。。
(と言うか今は状態保持の為にビューごと保存しちゃうのが流行りですか?)

遷移時、特定のビューの指定として例えばviews.hogeと言うポインタ名をメソッドの引数の所に入れると思うのですが、
そのポインタをファイル化して次回起動時にメソッドに渡しても無意味だと思います。
そこで、そのviews.hogeポインタ名を文字列にして保存し、
次回起動時にその文字列をポインタ名に戻して遷移メソッドに代入出来れば、
その時にはそのポインタはその時のビューを差してるので、
便利だなと思いました。

また帰ってからコードを書きます。。




925 :Now_loading...774KB:2011/12/07(水) 15:21:29.24 ID:JkAmZxGg
>>924
それだと、次回起動時にはポインタの先の内容は全く別のものになってるんじゃ?
オブジェクトごとまるごと保存するのが良さそうな

926 :913:2011/12/07(水) 15:43:06.35 ID:ozrGkexV
>>925
システムが起動毎にその名でそのビューを指すポインタを作るので、
保存した文字列からポインタ名を作られれば良いのですが、
やはり時代は丸保存なのでしょうか。

927 :Now_loading...774KB:2011/12/07(水) 17:05:25.94 ID:JkAmZxGg
それなら、変数名(=ポインタ名)がhogeだったとして、その変数の親をparentとすると、
parent['hoge']で呼べるんじゃなかったかな

それよりASでポインタって言葉出てこないよな?

928 :Now_loading...774KB:2011/12/07(水) 17:12:48.50 ID:pz862A5x
なんか話が進んでるが、まだよくわからん。
みんなよくわかってるなぁ。

ビューhoge、その他があり、そのビューのリストがviewsとして、
画面遷移させるには、画面遷移用のメソッドにビューを引数として渡す
こういう仕組みだということなんだろうけど、

>そのポインタをファイル化して次回起動時にメソッドに渡しても無意味だと思います。
ここがまるでわからない。

>システムが起動毎にその名でそのビューを指すポインタを作るので、
>保存した文字列からポインタ名を作られれば良いのですが、
保存した文字列から作らないといけない意味がわからない…。
起動時にどのビューで終了したかを保存して、それを再生したいだけ?
それならやりたい事はわかるけど、そういう方法じゃなくてもいいよな。

>やはり時代は丸保存なのでしょうか。
JavaとかならXMLEncoderとか使って簡単にできるから丸ごとでも良いかもしれないけど、
ASだったらそんな事したくないなぁ。

929 :Now_loading...774KB:2011/12/07(水) 17:51:27.06 ID:Q2xmPy12
自分ルールで「ポインタ」って言われても何のつもりなのかわからんなこりゃ。

930 :Now_loading...774KB:2011/12/07(水) 17:58:58.23 ID:Q2xmPy12
>>927みたいな感じなのかな。メソッド実行したいなら「オブジェクト["メソッド名"]();」てな感じで。

931 :Now_loading...774KB:2011/12/07(水) 20:11:33.71 ID:ONfOkZpb
継承関係とかがわかるクラス図ありませんか?


932 :Now_loading...774KB:2011/12/07(水) 20:34:36.02 ID:/nSG87Sx
ない。リファレンス見れば辿れるでしょ。
DisplayObject関係だけはリファレンスにもあったかな。これの図。
http://help.adobe.com/ja_JP/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3c.html

933 :Now_loading...774KB:2011/12/07(水) 20:44:09.72 ID:ONfOkZpb
>932
ありがとう
class diagramで検索したら何個かでかいファイル見つかりました

934 :913:2011/12/08(木) 02:12:18.56 ID:AOuL997P
みなさま昨日一日おつきあいすみませんでした。

今更ですが、関係ソースは以下のメソッドの第一引数に遷移する先のビューを入れると
そこに遷移するというものだけでした。
navigator.pushView(views.hoge,null,null);

まずこれが遷移前にいたビューの名前の文字列をファイルから取り出した処理だと仮定して、
var hogeString:String = "hoge";

以下の文を実行しても、viewsパッケージを値として使用できませんとエラーが出て出来ませんでした。
navigator.pushView(views[hogeString],null,null);
何かviewsは特別の物のようです。。

ASではアドレスの入った変数の事を特に何と言えば良いのか分かりませんでしたすみません。
単に「オブジェクトの変数」で良かったのかな。

935 :Now_loading...774KB:2011/12/08(木) 11:11:18.79 ID:qOqIf011
やっと、Flexでモバイルアプリ開発してるんだろうなということがわかった。
最初に書いておけばなんて事は無いのに。

>何かviewsは特別の物のようです。。
たぶんあなたの書いたviewsってパッケージの事じゃ無かろうか。

>>928とかの内容に答えていればもっと的確なアドバイスがもらえただろう。

で、何がやりたいの?
次回起動時に指定のviewで始めたいだけじゃないの??

936 :913:2011/12/08(木) 17:37:20.62 ID:AOuL997P
>>935
>最初に書いておけば
その様ですね。こちらはASのスレなので、、
とかいらない事を考えてました。

>>928とかの内容に答えていれば
はじめのうち内容が理解できませんでした、、。

>viewsってパッケージの事じゃ
そうですね。views;とだけ書いても
それは値として使えないと怒られました。

>次回起動時に指定のviewで始めたいだけ
そうなんです。そのシンプルな方法を探していました。



937 :Now_loading...774KB:2011/12/08(木) 19:10:45.01 ID:qOqIf011
>>936
>>1には
> ●質問する時は自分の環境を書く(AS2,AS3の別も)
> ●まず自分がやりたいことを明確に書く。そのために試してみた処理を書く
とあるわけだが。

> >次回起動時に指定のviewで始めたいだけ
> そうなんです。そのシンプルな方法を探していました。

pushViewの引数に指定するのは、Classなので変数名がわかってもしょうがない。
viewsパッケージ内であなたが作ったHoge等のビューを指定する。
なので終了時に保存するのは、終了時のViewのクラス名。

クラス名はflash.utils.describeType()を利用して取得が可能。
この返値がXMLなので、終了時のview内でdescribeType(this).@name として、E4X形式でアクセスする。
で、コレを文字列として保存したら良いのでは無かろうか。

で、起動時にそのviewにするには、
flash.utils.getDefinitionByName()を利用する。
返値がClassなので、getDefinitionByName(保存した文字列)で取得したものを
pushViewの引数に渡せばいいはず。

試してないから色々落とし穴があるかもしれないけど。


938 :913:2011/12/09(金) 00:21:54.02 ID:I1e5l29r
>>937
おおありがとうございますそんな方法があるんですか。
自分でも時間だけはかけて色々探したんですが。。
試して見ます。

ビューを再起動時に再現すると言う意味ではセッションパーシスタンスと言う
仕組みがある様ですが、技量が無いのでデータ再現までは辿り着けていないですが。

939 :Now_loading...774KB:2011/12/09(金) 09:51:07.11 ID:0dt/EFyR
現在AIRで製作していますデスクトップアプリなのですが、
フルスクリーン表示で、大量のPNG画像のアニメを使用しており
ユーザーのモニター解像度によっては激重になってしまいます。

StageQualityも、AIRは画質調整が高画質と最高画質しか対応しておらず、
flash版の低画質のような全画像のスムージングを切る選択肢を入れたいのですが、
良い方法はあるでしょうか。


940 :Now_loading...774KB:2011/12/09(金) 11:29:52.28 ID:H6wF/FaK
ゲームとかで制限時間(30秒くらい)はかるのって
毎フレームgetTimerして設定時間と比較するのが普通でしょうか?


941 :940:2011/12/09(金) 11:33:43.01 ID:H6wF/FaK
書き忘れました。AS3.0です
他には毎フレームcount++してfpsで割るのと、setIntervalくらいしか思いつきませんでした

942 :Now_loading...774KB:2011/12/09(金) 14:33:49.47 ID:5hPrON3z
タイマーイベント

943 :Now_loading...774KB:2011/12/09(金) 16:43:15.13 ID:H6wF/FaK
>>942
あー。
普通はタイマーイベント使うってことでしょうか?

944 :Now_loading...774KB:2011/12/09(金) 17:19:27.76 ID:5hPrON3z
んだ ヘルプ見てみ あれは色々便利だお

945 :Now_loading...774KB:2011/12/09(金) 21:05:36.39 ID:H6wF/FaK
>>944
ありがと!
試してみる

946 :Now_loading...774KB:2011/12/10(土) 22:27:04.82 ID:BRPjSHBT
AS3,WinXP,CS4です。BetweenAS3のベジェTweenの対象個数で質問です。
(すいません、長文です)
ステージ上に2個のMC(mcA,mcB)があり、同じステージにベジェTweenを起こすMC(twM)を
置きました。 つまりmcA,mcB,twMは兄弟の関係で、上下構造はの下記ようになります。

 上側) [ twM ] [ mcB ] [ mcA ] (下側

最初、mcAにベジェTweenを設定して動作できたので、これを解除してmcBに設定したところ、
mcBにもベジェ動作が起こりましたが、同時にmcAも解除した筈のベジェ動作が起きました。
前の名残が作用した感じでです。 ※事実上パラレル動作になる

Tween解除はtwMをremoveChildして更にこれをnullにしています。また、設定の際は毎度twMを
newしています。 (常に新規のベジェTweenを起こすMCが設置される筈ですが・・・)

実際のベジェTween記述は下記で、var iTween:ITween; でITweenオブジェクトを定義し、
ボタンのMouseEvent.CLICKで下が実行されます。

iTween = BetweenAS3.bezier(
ターゲットMC(targetM),
カーブポイントなどのベジェ曲線の記述,
所要時間,
BackEaseOutなどのTweenタイプ
);
iTween.play();
trace("情報:"+targetM, iTween);//動作情報を知る

ここで不思議なことに最後の行の trace("情報:"+targetM, iTween); はボタンを1回しか押していないのに
名残動作がある場合に2回実行されます。 つまり、現設定+名残の2個です。
なぜこのような(パラレル動作的な)現象が起こるのでしょうか?


947 :Now_loading...774KB:2011/12/11(日) 02:31:23.36 ID:em69GtDU
また失礼します。モバイルAIRアプリをMXMLとASで作っています。Groupに登録されたTextAreaとその書かれた内容をひとまとめに保存しようと思っています。
まず<s:ViewNavigatorApplication>にpersistNavigatorState="true"を追加して、以下の様に[RemoteClass]付きのGroupクラスを継承したクラスを作り、
package HogeGroup
{ import spark.components.Group;
[RemoteClass]
public class HogeGroup extends Group
{ public function hogeGroup(){ super(); } } }

以下の文でそのHogeGroupにTextAreaを作り、起動して適当に文字を入力します。
public var hogeGroup:HogeGroup;
public var textArea:TextArea;
protected function hoge_creationCompleteHandler (event:FlexEvent):void
{ hogeGroup = new HogeGroup();
textArea = new TextArea();
hogeGroup.addElement(textArea);
group.addElement(hogeGroup);//groupはMXMLで定義されているGroupコンテナのid }

そして以下のボタンでhogeGroupをdata.hogeに返してから終了。
protected function toData_clickHandler(event:MouseEvent):void { data.hoge = hogeGroup;}

で再起動して以下のボタンでhogeGroupに戻した時に、変換出来ませんとエラーが出ます。
protected function fromData_clickHandler(event:MouseEvent):void
{ hogeGroup = data.hoge;
group.addElement(hogeGroup); }

[RemoteClass]を付けたので変換出来ると思ったのですが、何がダメでしょうか?

948 :Now_loading...774KB:2011/12/11(日) 02:44:57.40 ID:4KufB3Ej
http://help.adobe.com/ja_JP/flex/mobileapps/WSb0a29bf92525419c-54dd253312afbec3ecb-8000.html
これの一番最後の項目がヒントになんじゃね?

949 :Now_loading...774KB:2011/12/11(日) 03:11:09.88 ID:jVmMrWN7
てす

950 :947:2011/12/11(日) 13:00:29.36 ID:em69GtDU
>>948
ありがとうございます。
http://www.adobe.com/jp/devnet/air/flex/quickstart/communicating_with_sockets_07.html
でも説明されている仕組みですね。やってみます。

しかし、Groupには操作により幾つかの種類や数のコンポーネントを生成、載せようと思っているのですが、
Groupまるごと保存出来るのではなく、例えば載っかってる全てのコンポーネントのサブクラスを作って、
それに上記のinput、output のメソッドを書き、各々をdataの要素として入れ、
また取り出して以前と同じ様にGroupに並べ直さなければならないとなると、
管理等結構煩雑になりますね。。

もしかしてカスタムGroup上で各生成カスタムコンポーネント自体についても、
その保存方法を行えば良いのかな。どちらにせよやってみます。

951 :947:2011/12/12(月) 01:24:34.31 ID:3UP+0msg
教えていただいた方法含め色々試した所、結局カスタムクラス等を作る必要もなく、
[RemoteClass]ではなくregisterClassAlias()をGroup用にもTextArea用にも、
各々インスタンスの宣言前、dataの入出両方の手前にも各々載せたらTextAreaに書かれた文章も
再起動時に現れました。自分しか知らない当たり前の事だったのかもしれませんが。。
しかし手軽に出来てよかったです。ありがとうございました。

315 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)