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/

902 :【お絵かきアプリ】はじめまして:2011/12/03(土) 17:36:52.48 ID:hYcW2LU0
はじめまして。
AIRでAndroidタブレット向けにお絵かきアプリを作っています。

絵を描く時の描画が指に遅れて付いてくるので困っています。
PCで動かすと大丈夫ですが、タブレットで動かすと遅れます。

Spriteに絵を描く時に graphics.moveTo(), graphics.lineTo()
を使用しているのですが、最初だけ指に追従し、
線が増えると共に遅くなります。

何か手がかりがあれば、教えていただきたいです。
よろしくお願いします。

903 :Now_loading...774KB:2011/12/03(土) 21:08:38.87 ID:ls6y0Ppu
>>901
sqliteの「その都度〜」っていう暗号はどこで聞いてきたわけ?そこで聞いてくれ。

>>902
lineTo系はタブレットによっては無理。つーかベクター描画で速度出すとかほぼ無理。
touchEventで座標データだけとって、自前でBitmapDataに書き込むと少しはマシ。
setPixel系のメソッド使って自前でlineTo相当の処理を実装するわけね。

904 :Now_loading...774KB:2011/12/03(土) 22:59:28.41 ID:LXtFFgwt
>>903
ありがとう。その都度云々と言っているのは、
自分の妄想なので自分で実装して見ます。

905 :Now_loading...774KB:2011/12/04(日) 02:05:42.27 ID:KGnamCvE
Actionscript2.0、FlashCS3を使用しています。

ID1=1;
ID2=2;
ID3=3;



ID20=20;

↑一つ一つ、打ち込んでいくのが面倒だな、と感じています。
一括して処理する方法があれば、ご教授いただけますでしょうか。

906 :Now_loading...774KB:2011/12/04(日) 02:10:13.54 ID:IrsxvSUg
>>905
配列アクセス演算子と、forループあたりでいける

907 :【お絵かきアプリ】はじめまして:2011/12/04(日) 13:33:56.58 ID:sE3VMJZt
>>903
お返事ありがとうございます。
各行がそれぞれ、とても参考になりました。
BitmapDataで試してみます。

908 :Now_loading...774KB:2011/12/04(日) 16:49:54.28 ID:T69RFnqa
AS1.0の質問です
画面をドラッグして放すと直線を描画する関数を作ってみたのですが
直線の長さ(始点から終点までの距離)が一定以上になると長さが上限に固定されて
ドラッグしてもこれ以上伸びなくなるようにするにはどうすればいいんでしょうか?(終点の座標も取得したいです)
onMouseDown = function () {
xstart = Math.floor(_root._xmouse);
ystart = Math.floor(_root._ymouse);
Edit = true;
};
onMouseMove = function(){
if(Edit){
clear();
lineStyle(1,0x000000,100);
moveTo(xstart, ystart);
lineTo(Math.floor(_root._xmouse), Math.floor(_root._ymouse));
x = (xstart - Math.floor(_root._xmouse));
y = (ystart - Math.floor(_root._ymouse));
rot = Math.atan2(y,x) * 180 / Math.PI * -1;
lengh = Math.sqrt( x * x + y * y);
}};

onMouseUp = function () {
if(Edit){Edit = false;trace("角度:"+rot +"/長さ:"+ lengh);}
};

909 :Now_loading...774KB:2011/12/04(日) 17:15:57.31 ID:bdmoqaQO
AS3(Flex4.5)で質問です。

10列あるDataGridの3列目から4列目の上部に
列のグループ名を表示するLabelを動的に貼ろうと思っています。

今はLabelのxを列1のwidthと列2のwidthを足してwidthについては列3と列4のwidthを足して設定しています。
<s:Label text="hoge" x={column1.width + column2.width} width={column3.width + column4.width}/>
ですが、このままだと微妙に左にずれたりしてしまっています。

きれいに各列の位置と合わせるにはどのようにすればよろしいでしょうか。



910 :Now_loading...774KB:2011/12/04(日) 17:59:05.64 ID:FcAm69rt
>>908
なんもわかってねえならわかってないって書けよ・・・

911 :908:2011/12/04(日) 18:58:17.32 ID:T69RFnqa
Math.cosとMath.sinでできました
スレ汚しすみません

912 :905:2011/12/05(月) 06:03:27.85 ID:e8mCD/L+
>>906
アドバイスのおかげで、無事解決致しました。
どうも、ありがとうございました。

for(i=0; i<=20; i++){
this['ID'+i]=i;
}

913 :Now_loading...774KB:2011/12/06(火) 22:40:14.95 ID:RFT3w722
変数の名前を文字列で得たり、文字列を変数名とした変数を作ったり使ったりするには
どうしたら良いでしょうか?


var hoge:int;という変数の場合"hoge"という文字列を得る。
"hoge"という文字列を変数名に持つvar hoge:intを作る。
"hoge"と言う文字列を使い、hogeという変数をメソッドの引数に使用する。

914 :Now_loading...774KB:2011/12/07(水) 01:30:34.29 ID:gOVJrA8s
配列で解決しろよ

915 :Now_loading...774KB:2011/12/07(水) 02:39:56.47 ID:ozrGkexV
>>914
ありがとうございます。
、、、色々考えましたが、ピンと来ません。もうちょっとヒントください。

916 :Now_loading...774KB:2011/12/07(水) 02:57:28.83 ID:gOVJrA8s
具体的にやりたい処理はどんなの?

変数名って基本的に意味を持たないと思うよ

917 :913:2011/12/07(水) 10:30:28.54 ID:ozrGkexV
>>915
今回は、アプリ終了時のビューが何であったかをファイルに残し、
再起動時にそれを読み込んでそこに遷移すると言う事をしようとしました。
別の変数に記録し、if~if else文で遷移する可能性のある画面毎に遷移文を書いておけば良いのですが、
今後ビューが増えたりした時のためにメンテナンス性を考えました。


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)