【AS】ActionScript技術交換スレ Part4

■ このスレッドは過去ログ倉庫に格納されています
2005/12/22(木) 01:22:31ID:Dj6CR8TB
ムービー内の詳しいASの組み方はもちろん、PerlやJava・PHPを介したCGI連携といった技術や、
XMLSocketを使用したオンラインゲームなど、ムービー以外の用途として活躍するActionScriptの技術交換スレです。
また、AS2.0/3.0の話、Flash Media ServerとかColdFusionやRemoting、コンポーネント等、
他スレでは話題に上がりづらいFLASH周りのコアな技術交換&雑談にもご利用下さい。

前スレ
http://pc8.2ch.net/test/read.cgi/swf/1071929938/

前々スレ
http://pc4.2ch.net/test/read.cgi/swf/1054659810/

前々々スレ
http://pc3.2ch.net/test/read.cgi/swf/1030886688/

※:なおこのスレでは「NowLoadingどうやるの?」みたいな
  初歩的な質問は受け付けませんのであしからず。
  その手の質問やそれに近いレベルの質問は↓でドゾー
ActionScript 誰かが物凄い勢いで解答するスレ 10
http://pc8.2ch.net/test/read.cgi/swf/1134826648/

参考サイトや参考スレは>>2-5以内。
2007/09/15(土) 19:10:23ID:0Wjgo2PV
実際ちょっと調べてみてます。100倍は無理だと思いますけど。
2007/09/15(土) 23:17:00ID:MG3DeQda
スクリプト処理が多少高速化しても結局描画が足引っ張るから体感ではたいして変わらんべ。
2007/09/16(日) 01:33:28ID:U5mjIxKH
君が描画スピードが100倍はや(ry
2007/09/25(火) 13:10:06ID:tZRO7eiE
FAMEで構築してる人いる?
2007/09/26(水) 00:50:00ID:MiPjmbL8
でもなんか画像の拡縮率をランダムに変えて高速に表示するベンチマークぽいのを見たけど
AS2とAS3では見た目でスピードの違いがわかったよ。
2007/09/26(水) 15:49:37ID:QommhW5X
AS3は10倍の速度アップと言われててあれだからな。描画は変わらんから
スクリプトアニメーションをAS3にしたら意図しない抑揚がついて笑った。
385Now_loading...774KB
垢版 |
2007/09/29(土) 12:20:21ID:v8zp+XND
http://www.creatistblog.com/pv3d/dynamics/
↑みたいにmxmlでUI作って、その上にpapervision3dのっけたいんだけどサンプルとかどっかに落ちてないかな
2007/09/29(土) 21:46:11ID:s97Y48Yz
pv3dにFlexサンプルが入ってるがそれじゃ駄目なん?
387Now_loading...774KB
垢版 |
2007/09/29(土) 23:11:14ID:v8zp+XND
サンプルにあるのはflaなんですよ。やっぱsdkだけじゃだめっすか
2007/09/30(日) 04:37:33ID:HaNsjBy/
普通にmxmlのサンプルが入ってるが
389Now_loading...774KB
垢版 |
2007/09/30(日) 12:27:52ID:mDxt2mQ7
え、まじですか。どこにありました?
2007/09/30(日) 12:32:11ID:xkzeIep9
俺のケツん中だよ
2007/09/30(日) 12:57:44ID:wF6IDFif
そうだ!お前、俺の
2007/10/10(水) 18:07:50ID:lkIfy0+l
AstroとThermo……
社用案件がFlex1.5時代の保守中心なのに時代はどんどん進むなー
なんだよquakeIIIが動くとか
2007/10/11(木) 17:11:18ID:TvISlJWE
やっぱASプログラマーって少ないんだよな・・・。
メモリ開放関連でずっとぐぐってたけど解決しなくて俺涙目

1280, 960の■のBitmapDataを生成して、Bitmap型に入れてSpriteに加えるプログラム(Heavy.as)を、
オブジェクトとして読み込んで配列に加えては消していくのを繰り返すプログラムを作ってみたんだけど、
メモリが延々と増え続けていって俺涙目。
Heavy.asに一定時間ごとに音を鳴らすプログラム入れて試してみたら、ずっと一定時間ごとになり続けているあたりで、
参照を消しても対象のオブジェクトは消されないことがわかるし・・・。
解決策はHeavy.as内に、Heavy.as内にある全てのBitmapData型にdisposeして、
イベントも全てremoveEventListenerするようなプログラムかかないといけないのかな。

直に丸々削除するような関数でもあれば楽だったんだけどなぁ
2007/10/11(木) 19:40:02ID:hnfCfgZq
よくわからん。もし問題なければそのHeavy.asみせて。
2007/10/11(木) 20:02:34ID:LoIZVITO
ひでぇ設計と日本語
2007/10/11(木) 20:14:56ID:TvISlJWE
>>394
http://www.uploda.org/uporg1060798.zip.html
中に入っているTest.swfを実行すると、
延々とメモリ使用量が増えていく・・・はずなんだが、
Windowsでやってみたらちゃんとガベージコレクションされてるのか一定以上増えなくて俺更に涙目。
これ解決しないとゲーム完成に辿り着けないのにor2=3
2007/10/11(木) 21:17:08ID:MRuNtHOA
Delete関数は何のために書いたの?
2007/10/11(木) 21:17:21ID:OhoJXt7D
個人的には396は新手のブラクラだと思った

>>393
・ガベージコレクションはいつ呼び出されるか分からない
・普通に追加したイベントリスナーは参照してるのと同じ
・というかメモリの確保や解放はそもそもコストの高い操作
・サイズの大きいBitmapDataはメモリを大量に使うよ、一回計算してみれば?
個人的には同じBitmapDataを使い回して
中身を毎回BitmapData.fillRect()か何かで塗りつぶすコードに書き換えてみる事を勧める

ガベージコレクションを真面目に働かせるのが目的ならともかく
普通に動かすならオブジェクトの作りすぎは禁物

※以下独り言
ゲーム系の制作とWebアプリ系の制作は求められる技術がまるで違うにもかかわらず
AS系職人とかいう名前付けられて一緒くたにされて俺涙目
2007/10/11(木) 21:34:33ID:TvISlJWE
>>397
Test.as側からのHeavy.asに対する参照を外す際、
それを使ってHeavy.as内のBitmapDataを空っぽにすると
ちゃんと軽くなるってのを確かめる時につけたのがそのまんま残ってただけです。

>>398
ブロック崩しを作ってて、都合上ブロックの生成・削除を繰り返さないといけないことになってるんだけど、
それでちゃんと消してるはずなのにメモリが一向に減らないからどうなんだろうと思って、
ちょっと極端なプログラムを書いて試してみたんだ。

BreakBlock ┬ Block ― Sprite ― Bitmap ― BitmapData
        ├ Block …
        :
        └ Block …
って感じのつくりで、BreakBlockからのBlockへの参照を外せば、
Blockはその下のBitmapDataやらと一緒に消えてくれるかなと思ってたんだけど、
一向に消える気配がなくてどーすりゃええんよーと思ってたところ。

参照から外しても、その内部でイベントが働いたりしてると消えないのかなぁ
2007/10/11(木) 23:00:35ID:OhoJXt7D
>>399
Flash Player 9のガベージコレクションは参照を消せば直ちにメモリが解放されるわけじゃないよ
ガベージコレクションが動くまではずっとメモリに残りっぱなし。

そしてそのガベージコレクションの動くタイミングだけど、かなり遅いと思っていい。
厳密なタイミングが知りたいなら、
どこかで書いたような気がするけどSystem.totalMemoryが便利
まあ、AS3で本格的なゲームを作ろうと思ってる人なら一度目で見て実感するのがいいよ


俺が使った回避策としては
ブロックを削除するかわりにインスタンスをどこかに保存しておいて
生成する代わりに保存したインスタンスを再利用すれば面白いほど速くなると思うよ
この場合は変数の再初期化のし忘れに要注意だけどな

全部BitmapData.copyPixel()で描画するように書き直すのも最終手段としてはアリだな
2007/10/11(木) 23:19:41ID:hnfCfgZq
Test.asの
heavyArray[0] = null;
って、もしかして
heavyArray[heavyArray.length - 1] = null;
のつもり?
2007/10/12(金) 00:17:52ID:u518jYM4
頭を潰しているんだろ
pop
2007/10/12(金) 00:32:39ID:FMV0xOnK
>>400
丁寧にありがとうございます。
今のところ、システム的に全てを残すというものが難しいので、
もう少しいろいろと工夫してみようと思います。

>>401
空のArray型にpush(一番下に追加)した後、すぐpop(一番下を削除)を繰り返すだけなので、
項目数は絶対に1つしかないです。
だから、この場合だと[0]でも[heavyArray.length - 1]でも同じ結果になります。
2007/10/14(日) 22:00:34ID:sRm1NK7O
てか、ブロック崩しの場合、画像はブロックの下のレイヤーだよね?
個々のブロックは真四角描いてBevelFilterでもかませときゃ
それっぽいのが出来そうだし。

どうしてもBitmapデータをブロック上に描きたいんだい!って場合は、
大きなひとつのBitmapDataから、一部を切り出してgraphicsの
bitmapFill+drawRectで描くShapeの派生クラスを作ったらどうかな。
少なくともBitmapのメモリの心配はなくなると思うよ。

自分Flex使いなので、派生クラスとか普段作らないヒトだったらゴメン
2007/10/15(月) 22:44:26ID:FkcAGeVT
>>404
どうやら、メモリが一向に減らなかった原因は
・BitmapDataにはガーベジコレクションが働かない(使わなくなったらdispose()で消さないといけない)。
・派生クラスをオブジェクトとして用いた時、その内部でTimerイベントなど、何らかのイベントが働いていると参照を外してもガーベジされない
だったみたいです。
一つの解決策を教えていただいて申し訳ありませんが、
とりあえずこれでメモリは問題なさそうなので、しばらくこれで様子を見てみようと思います。
2007/10/15(月) 23:19:26ID:gZWlglvB
>405
うん。イベントリスナは忘れずに外さないと。
慣れるまでは、イベントハンドラの最初にtraceを入れておいたほうがいい。
弱参照も、指定できるところはしておいたほうが無難。

BitmapDataオブジェクト自体、数を作らないように工夫したほうがいいよ。
Bitmapコンポーネント自体、BitmapDataを使い回しするように実装されてるわけだし、
dispose()をしてもすぐ消えるわけではないので。


2007/10/15(月) 23:46:21ID:FkcAGeVT
>>406
アレ、1つのBitmapに対応するようにBitmapDataが存在するように思ってたけど、
もしかして
bitmapData:BitmapData = new BitmapData(48, 24, true, 0x00000000);
bitmap1:Bitmap = new Bitmap(bitmapData);
bitmap2:Bitmap = new Bitmap(bitmapData);
ってできたりする・・・?
だとしたら漏れの思考ティウンティウン\(^o^)/
2007/10/16(火) 17:55:03ID:qFYFJp0p
>>407

できるよ。
その場合bitmapDataを更新すれば、全てのBitmapの表示が更新される。
2007/10/16(火) 21:58:22ID:vC2WbUkQ
>>408
ありがとう。
さっそく仕様変更してみたら、かなり軽くなった。

一つ気になる点は、
bitmapData1:BitmapData = new BitmapData(48, 24, true, 0xFFFF0000);
bitmapData2:BitmapData = new BitmapData(48, 24, true, 0xFFFF0000);
bitmap:Bitmap = new Bitmap(bitmapData1);
addChild(bitmap);
ってした後、イベントでbitmapの参照先をbitmapData2に変更したくなった場合、
一旦removeChild(bitmap);で外した後、
bitmap = new Bitmap(bitmapData2);
って上書きして、再度addChild(bitmap);で加えなおさないといけないのかな。

直接参照先を変更できるようなものがあるといいんだけど、
探しても見つからなかったし、特にこれで問題でないからこのままで動かしてるんだけど・・・。
大丈夫なのかしら
2007/10/16(火) 23:25:14ID:hnbB0n94
>>409
もしBitmap.bitmapDataプロパティをまだ知らないなら
LiveDocs辺りで調べておくといいと思う
2007/10/17(水) 12:30:10ID:U2Klb6Zs
>>410
あー、bitmapDataプロパティを変更してやれば、
入れ直さなくても参照先が変更されるのですね。
存在は知っていて、それに対してdrawRectやらの描画をすると、
参照先のBitmapDataに変更が効くのはわかってましたけど、
このプロパティを変えることで参照先を変更できるというのには気がつきませんでした。
2007/10/21(日) 20:22:33ID:MZ6bCI92
AS3始めたばっかりの初心者です
次のようなコードを書いてみたんですが
実行しても何も表示してくれません
イマイチ原因がわからないので誰かご教授してください
お願いします

package {
import flash.display.*;
import flash.geom.*;

public class Etude extends Sprite {
public function Etude() {
addChild(new BgShape());
}
}
}
import flash.geom.*;
import flash.display.*;


class BgShape extends Shape {
public function BgShape(){
//タイル
var tile:BitmapData = new BitmapData(20,20,true,0xffffffff);
tile.fillRect( new Rectangle(0,0,10,10),0xffcccccc);
tile.fillRect( new Rectangle(10,10,10,10),0xffcccccc);

// 描画してるはずなのに?
graphics.beginBitmapFill(tile);
graphics.endFill();
}
}
2007/10/21(日) 20:30:13ID:CUQqP5yL
ちょっと今試せる環境にいないから外してるかもわからんけど

graphics.beginBitmapFill(tile);
//ここで四角形か何か図形を書く
graphics.endFill();

いちおう、ここじゃなく質問スレのほうがいいような希ガス
2007/10/21(日) 21:02:45ID:MZ6bCI92
>>413
うーん、図形は描画されても背景は白いままですね…
どうもスレ違いっぽいんで質問スレに行きます
ありがとうございました
2007/10/31(水) 22:32:24ID:/AgDGvI8
動画(flvとか)を再生するのはできるのですが,
これを1フレームごとに静止画として抽出して処理したいのですが
そもそも可能でしょうか?
2007/11/01(木) 00:10:12ID:nSqaJiY0
できる。

・・・が、詳しいやり方は忘れてしまった。
動画にフィルターかけて表示したりする手法に必須な処理のはずだから、
その関連で調べれば出る・・・のかな。

var bmpData:BitmapData = new BitmapData(400, 300);
bmpData.draw(video);
って感じでかけなかったっけ?
417415
垢版 |
2007/11/01(木) 22:07:31ID:q229Ncrz
なるほど。
BitmapData.drawメソッドを使えばできそうな感じですね。
今度実際にサンプル作って確認してみます。
2007/11/01(木) 23:06:38ID:eBxLNgsN
他ドメインの画像or動画はdrawできない制限があるけどな
419fausut
垢版 |
2007/11/01(木) 23:21:10ID:XUKW7+hN
はじめまして。
半月前くらいからFlashをやり始めて、
現在、FlashとPapervision3Dを使って、パノラマ画像の全方位参照できるものを
作ってます。
(こんな感じのです↓↓)
http://labs.blitzagency.com/?p=388
http://flashvr.sakura.ne.jp/sample.htm

全方位上下360度回転は出来たのですが、
上のサイトみたいに、ホットスポットがうまく付けることが出来ません。
Planeクラスを作って、それをMovieSceneに貼り付けは出来るんですが、
回転させると、パノラマ画像とホットスポットがずれてしまい、
うまく表示させることが出来ません。

うまく実装できる方法がありましたら、教えてください。
2007/11/02(金) 19:43:02ID:kfKAstev
パノラマ画像とホットスポットをDisplayObjectContainer3Dでまとめてないからじゃね?
ソース見てないしpv3d詳しくないから知らんけど
2007/11/02(金) 22:17:30ID:kfKAstev
それかカメラじゃなくてパノラマ自体を回してるだけとか
2007/12/22(土) 22:18:23ID:BPyKaVSz
質問スレが過疎ってるようなんでこっちに・・
TextField内の外部htmlテキストにロールオーバー・ロールアウトで、
asfunctionは実行可能な技があったら教えて下さいませ。
Flash Player 8 書き出し、アプリCS3です。
2007/12/22(土) 22:46:07ID:zCDEnwd8
>>422
質問の内容がよくわからないけど、
裏にmc置いてhitTestでいいんじゃない?
2007/12/22(土) 22:59:38ID:BPyKaVSz
>>416
漏れへのレスならドモです。

a hrefでリンクボタン化している文字列にだけ適用させて、
マウスオーバー、アウトでMCの表示を操作したいんですわ。
ちなみに外部テキストはRSSから拾ってるんで内容はRSS更新の都度変わります。

あームリかなぁ。。
現状は仰せの通りTextFieldの裏にMC配置、hitTestで妥協中・・
2007/12/31(月) 17:21:58ID:yUqwGUDc
リンク部分にカスタムタグ使ってるならStringで抽出してasfunction付のタグ
追加してやればいいんじゃない?
2008/01/03(木) 09:50:56ID:2SBefrL+
亀レスですがTHX。
普通にa hrefに仕込ませて、
あとはonRollOver、onRollOut使えばイケるんかな・・
すでにwebは公開しちゃったんだが、
時間ある時にやってみますわ。
427Now_loading...774KB
垢版 |
2008/01/03(木) 18:04:17ID:XroEtnCU
fschというshellでコンパイルを高速化しようとAdobe本家のwebから
DLを試みたのだけど、落とせない・・・本家で落とせないのでお手上げ。
どこかで落とせます?
2008/01/03(木) 18:56:50ID:sdBizuiN
>>427
Adobe Labsで落とせるよ。

ttp://labs.adobe.com/wiki/index.php/Flex_Compiler_Shell
429Now_loading...774KB
垢版 |
2008/01/03(木) 23:07:16ID:XroEtnCU
>Adobe Labsで落とせるよ。

まさにそのURLにあるサイトで落とせなかったんですよ。
>1. Download the fcsh ZIP file and view the license agreement.
ってところで、クリックするとダウンロード時のダイアログは出るのに
いつまでたってもDLが開始されないのですよ。
プログレスバーも出てこない・・・・
2008/01/03(木) 23:25:05ID:Kf90Hx3M
Flex3 SDKには最初から同梱されてなかったっけか
431Now_loading...774KB
垢版 |
2008/01/04(金) 00:52:51ID:jKMS17te
>Flex3 SDKには最初から同梱されてなかったっけか
それが、入ってなかったです・・・。
取り扱ってるソースセットがだんだん大きくなってきて、
コンパイルから実行までのTurnAroundが長くなりつつあったので
なんとしてもfschを導入したいのですが・・・
2008/01/04(金) 03:38:32ID:sWC8/piO
>>431
今は落とせたよ。
2008/01/04(金) 09:28:11ID:A+aJDRXV
どうしても落とせなかったら別のブラウザでもう一度やってみたら?
434Now_loading...774KB
垢版 |
2008/01/04(金) 14:53:23ID:Z6beYMw+
あ、おいらも落とせない。なにこれ。
Adobeのサイト運営者に連絡してみては?
linux上のFireFox経由からでも落とせなかった。
DLの認識はしてるっぽいけどね。
435Now_loading...774KB
垢版 |
2008/01/04(金) 18:05:33ID:jKMS17te
アドビに直接連絡したところ、zipファイルをメールで転送していただきました。

おかげさまでfcshを起動することができました・・・なんですが、
mxmlc だとか手打ちでコンパイルできるのですが、
fcsh上で動作するmakeってないのでしょうか?
なにせコマンドプロンプトでvc++付属のnmake.exeでMakefileを記述
していたため、fcsh上だと途端に不便なのですよ・・・
436435
垢版 |
2008/01/04(金) 18:24:42ID:jKMS17te
仕方ないので、nmakeの実行結果をリダイレクトして、
makeが実行するコマンドライン文字列を
取得して、それをコピってfcshにペーストすることでなんとか対処。
んー、バタ臭い。

それにしても、超速ですね。
こういうの、C++だとか他のコンパイル言語にも適応ないんでしょうか?
一応、ccacheだとかdistccがあるけど、ここまで速くはならんかったですよ
2008/01/04(金) 22:48:03ID:bJZZX5i5
バタ臭くはねーだろw
2008/01/06(日) 00:13:49ID:eUwtc7YK
ActionScriptでassert()に相当するものってないものだろうか?
google先生に聞いてもイマイチ分からなかったもので。
2008/01/06(日) 15:26:50ID:T9xfIm/y
>>438
if (!式) throw new Error("メッセージ");

2008/01/06(日) 15:46:24ID:eUwtc7YK
>>439

さんくす。でもAS3にはプリプロセッサの機能がないみたいだから、
やっぱり毎回、if()で条件式書く必要があるんでしょうか?
2008/01/06(日) 19:56:55ID:T9xfIm/y
>>440
ごめん、意味がわからない・・・。
2008/01/07(月) 00:01:44ID:ChOFqAmF
>ごめん、意味がわからない・・・。
例えばRelease時にはassert()は不要だから外してしまいたいのだけど
AS3にはプリプロセッサがないから、それができないのでしょうか?
という意味っす
2008/01/07(月) 02:11:12ID:p0jssUz7
>>442
>毎回、if()で条件式書く必要があるんでしょうか?
>assert()は不要だから外してしまいたいのだけど

何がしたいのかよくわからないけど、
最初からReleaseには書かなきゃいいんじゃない?

ifが同じ条件なら#includeとか。
2008/01/08(火) 13:22:38ID:egD4ofxn
見事なまでに話がかみ合ってないなw

>>442
とりあえずCのプリプロセッサ使えばいいんじゃね?
flexならmakeなりバッチなりで使えるし
flashならこんな手があるようだ
http://d.hatena.ne.jp/sunflat/20060604
2008/01/09(水) 03:30:11ID:0AGNb5vj
Cコンパイラなんて入れてないとか
プリプロセッサ使うためにわざわざ入れたくないという場合はこれがお勧め

http://mcpp.sourceforge.net/download-jp.html
2008/01/09(水) 04:01:07ID:JDzhgSvh
mcppの存在を初めて知った。
AS3と言わず、様々な言語でのプリプロセスに使えて良さげ。
しかし、これはfschでのキャッシュとの相性はどうなんだろ。
2008/01/09(水) 05:32:55ID:0AGNb5vj
>>446
fcshの仕組みがまだよくわからないからはっきりとはいえないけど
コード書き換えるとプリプロセスからやり直しだからキャッシュして速度をかせぐコンパイラと
プリプロセッサの相性はあまりよくないと思われ
2008/01/09(水) 19:27:32ID:JDzhgSvh
やはり言語仕様としてプリプロセッサを定義してもらわないと
厳しいのかな。
449Now_loading...774KB
垢版 |
2008/01/10(木) 09:21:56ID:Y6DSWrNp
あんまり難しくなられるとしんぢゃう…
何でも屋的にはほどほどでいてくれないと餅は餅屋になちゃーう
450Now_loading...774KB
垢版 |
2008/01/18(金) 18:14:42ID:iI/vs/sE
age
451Now_loading...774KB
垢版 |
2008/02/06(水) 04:06:12ID:wTqM5oR4
swfをde-compileされてAction Scriptを外からのぞかれたくない場合、
swcにしちゃうのが一番簡単なのかな?
2008/02/10(日) 11:32:50ID:OhaQ+E4/
そんなに見られたらいやかい。
2008/02/12(火) 18:50:41ID:bIgMkCvR
Action Scriptでしかないのにね
2008/02/12(火) 20:55:26ID:uiFXZTD8
ロジックをサーバサイドにおいたらいいよ
455お絵かきツール
垢版 |
2008/02/24(日) 16:19:48ID:/GA8A9WJ
attachBitmapで作ったビットマップのところにdraw()を使って、
描画した絵をphpに送りたいのですがうまくいきません。
だれか教えてください。
2008/02/24(日) 17:42:02ID:v+7M8Fra
getPixelで全部走査してみたら?
2008/02/25(月) 14:28:28ID:lOgBWgll
AS3.0 〜 PHP 〜 MySQL で速めのターン制オンライン対戦ゲーを作れないかと思っている俺は無謀?
通信テストしたらクライアントからDBまで往復で0.1秒前後みたいなんだけど。
2008/02/25(月) 18:11:08ID:Qtcgkvh9
別に問題ないかと。ターン制ならDBは待合専用にして、
ソケットでも使ってメッシュ型にした方がいんじゃねとは思うけど。
ブラウザ上でって縛りなら話は別。
459457
垢版 |
2008/02/26(火) 10:24:15ID:sf6f8TZn
>>458
ブラウザ上、DB一個なんだけど。
趣味で作るものだからどうってこたないんだけど。
2008/02/26(火) 11:29:37ID:alw0rdJ9
好きにしろ
461Now_loading...774KB
垢版 |
2008/03/17(月) 00:00:12ID:vbO1C9Zj
age
2008/06/29(日) 20:27:56ID:0r8rahFa
ActionScript Thread
http://www.libspark.org/htdocs/as3/thread-files/document/

AS3はシングルスレッドって書いてあるけれど
昔からonEnterFrameを使えば複数処理を走らせることができるよね?
今までのonEnterFrameでの複数処理実行に対し
さまざまな機能追加したものが今回のスレッドライブラリだ、という説明なら理解できるが
2008/06/30(月) 07:42:01ID:LDJKP/qS
>>462
で、どうしたの?
2008/06/30(月) 10:11:53ID:mTTuTRy9
>>463
>>462
2008/06/30(月) 18:19:04ID:DSl1AWvc
>>462
onEnterFrame使っても「同時に」複数処理は動いてないはず。
2008/06/30(月) 18:26:04ID:DSl1AWvc
ごめん、>>465はあんまり意味のない米だった。

onEnterFrame使えば今まででも擬似的にマルチスレッドっぽくなるけど、ややこしかった。
でもSparkのThread使えば、よりマルチスレッドっぽい文法を導入して、
簡単に擬似マルチスレッドできるよ、ってことじゃね。
2008/07/01(火) 07:09:13ID:FYN8cE/y
>>462のURLの先を読めば>>466の解釈が出来ると思うんだが、

>さまざまな機能追加したものが今回のスレッドライブラリだ、という説明なら理解できるが

ずばりそういう説明だと思うし、いまいち>>462の理解出来ない点が良くわからないなぁ…

468462
垢版 |
2008/07/01(火) 09:11:23ID:kXo7xDYW
初めくだりで、『処理の流れがひとつしかない「シングルスレッド」』と書いてあり
今まで複数処理実行ができなかった的な説明なので
おかしくないかな、という問題提議ですが。
レス感謝。>>466
2008/07/01(火) 10:49:42ID:qoWvNkaw
>>468
寧ろ、貴方の表現の方がおかしい。なんで「できなかった的」って過去形にしちゃうかな。

「AS3はシングルスレッド」で間違いない。
今までも、Thread使っても、複数同時処理はできない。
「できなかった」じゃなくて今でも「できない」。onEnterFrameを使おうがThreadを使おうが。
あくまでもThreadは 『「マルチスレッド」を擬似的に実現』 してるだけ。

だから、あの記述はそんなにおかしなものでもないと思うよ。
2008/07/01(火) 11:09:34ID:kXo7xDYW
あくまで擬似的なマルチスレッドであって
VMは一つなのだから結局はシングルスレッドだというのは理解しています。
onEnterFrameを用いようとも、今回のThreadクラスを用いようとも。

上記URLの初めの説明の、今まで非同期処理が入るととたんにコードが複雑になる理由として
「処理の流れがひとつしかないシングルスレッド」の箇所が引っかかったのです。

説明するのであれば、「処理の流れがひとつしかない」は不要でしょう。
擬似的なマルチスレッドという点から考えても、(結局は処理の流れは一つ)
今までもonEnterFrameで複数処理を走らせることができたという点から考えてもです。

でもあえて上記URLでは「処理の流れがひとつしかない」と書いてあることに、
もしかしたら今までの自分の認識が何か間違っていたのだろうか
とも考えたわけで>>462のような書き込みをしました。
おしまい
2008/07/02(水) 00:45:06ID:pCQJxhQD
ん?
>今までもonEnterFrameで複数処理を走らせることができたという点から考えてもです。
これは複数走らせることができているわけではなく、あくまでもonEnterFrame毎に「処理の流れが一つ」流れているだけでは?
俺の理解が間違ってる??
2008/07/02(水) 01:03:59ID:lqMaOJ5K
>>462 はAS1/2とAS3をごっちゃで考えてるんじゃないかなと思った。
AS1/2の頃は複数のMCにonEnterFrameを書けるから複数処理で、AS3でも同じように
onEnterFrameを書けると勘違いしてわざわざこんなライブラリ使う必要ないんじゃねってことでは?

・・・なんか自分自身も根本的に間違ってる気がする。
2008/07/04(金) 01:28:47ID:zSaXjz38
今までだと「処理の流れを書く方法」が整備されておらず、長い処理を分割して
フレームやタイマーでちょっとずつ処理してくような書き方(たとえばロード完了の
フラグがたつまでループするとか)をそれぞれユーザーが行っていく必要があったが、
スレッドライブラリを使うことによりそういった処理を統一的に一本の糸(処理)
として書くことができて、さらに複数の糸が並行的に協調していくことができる。

あくまで複数の「処理の流れ」を書けるということで、同時に複数実行されるわけ
ではないが、大きな流れの中で複数の流れを共存させられる仕組みなのだ。

というようなことなんじゃないかと使ったことがない俺が想像。
2008/07/04(金) 01:30:36ID:zSaXjz38
>説明するのであれば、「処理の流れがひとつしかない」は不要でしょう。

「複数の処理の流れを書くのはとても面倒」くらいだったらよかったかな
2008/07/05(土) 12:00:03ID:kFmI/yft
どもども。

言いたかったことは >>473-474 であってます。ちょっと説明が足りなかったですね。
何も無しに自分でマルチスレッド (処理の流れが複数ある) 風に書くのは面倒でした、
ということです。
2008/08/08(金) 01:01:44ID:ROBQ1V9T
>>471
あってる。
単に>>462がマルチタスクとマルチスレッドを混同してるだけじゃないか?
2008/08/08(金) 02:20:40ID:ROBQ1V9T
あーマルチタスクというのも微妙に違うか。
ただ>>473みたいなのってシングルスレッドの書き方なんよ。
それをマルチスレッド風って言うのは違和感あるな、何かと勘違いしてんじゃね、と。
スレ違いスマン
2008/08/08(金) 13:12:24ID:+JNcBkGE
>>476-477
例えばCなんかでマルチスレッドになるコードをどう頑張って書いても、
PCがシングルコアだった場合は結局内部でマルチスレッド"風"にしかならないわけだし、
コードという抽象化された部分でマルチスレッド風ということに何ら問題はないでしょ
むしろマルチタスクなんて全然関係ない物持ち出しちゃう方が理解が浅いんじゃないかと
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況