問題タブ [actionscript-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flash - ActionScript 3.0 ソケットが再接続できない
接続タイムアウト後に (Socket および XMLSocket クラスを介して) TCP リスナーに接続できません。
サーバーへの TCP 接続を維持する必要があるフラッシュ アプレットがあります。タイマーやピンポン システムなどを使用してタイムアウトを実装しました。ただし、問題があります。Socket.connect() を呼び出すと、フラッシュ プレーヤー (9.0.115 およびそれ以前の他の多くの安定版) は、SYN パケットを介して 3 つの接続要求を送信します。これらのいずれにも応答がない場合 (サーバーがダウンしているなどの理由で)、アプレットをサーバーに接続 [試行] することはできません。これまで。つまり、アプレットの存続期間内です。
明確化および/または要約するには:
Socket.connect() または XMLSocket.connect() に指定されたホスト/ポートのペアについて、呼び出しが失敗した場合、Flash アプレットの存続期間内の他の Socket (または XMLSocket) インスタンスへの後続の connect() 呼び出しは同じホスト/ポートのペアは無視されます。(少なくとも、パケット スニファを使用してわかる限りでは。)
私は多数の Socket メソッドを呼び出し、破棄¹ してオブジェクトを再作成し、ソケットのプールを使用して、今は思い出せない他のさまざまなメソッドを試しました。すべて役に立たない。
私の現在の解決策は、JavaScript 呼び出しを介して親 Web ページに通知し、アプレットをリロードさせることです。Flash がソケット接続を適切に処理できないという理由だけで、それが引き起こす問題の回避策を実装するつもりはありません。
非常に単純なものが欠けているに違いありません。
何か案は?
1: オブジェクトを実際に破壊できないことはわかっています。それらへの参照をすべて削除し、最善を尽くします。この場合、GC を明示的に呼び出そうとはしていません。(ただし、Socket を Array 内に配置してdeleteを使用しようとしたと思います。)
はい、接続が成功した場合は期待どおりに動作します (後で接続が切断された場合でも)。
これをトリガーする唯一のイベントは、サーバーがまったく応答しない場合です。あたかも Flash がホストとポートの組み合わせを「オフライン」としてマークし、アプレットの存続期間中はそれ以上パケットを送信しないかのようです。
接続の積極的な拒否 (たとえば、ホストはオンラインであるが、ポートをリッスンしていない) が原因ではないのではないかと思います。
Socket からエラー メッセージやその他の種類のフィードバックは得られません。
最初のペアが失敗したときに、同じホスト/ポートのペアに対して connect() を複数回呼び出したことがありますか? 最初の connect() が失敗したことをどうやって知りましたか? 後続の connect() 呼び出しの前に、ソケットをリセットするために何かしましたか?
apache-flex - FireFox3 で Flex コンポーネントを印刷する方法は?
FireFox の ActiveX コンポーネントのバグのある実装 (印刷時に実際にそれらのイメージを取得する必要があります) のおかげで、Flex コンポーネント (この場合はチャート) は FX で印刷されません。
IE6 でも IE7 で問題なく印刷されます。
これらのチャートを印刷する必要がありますが、動的コンテンツも含まれています。ユーザーが印刷するときに、それらを画像として再度描画したくはありません-Flexコンポーネントがそれを行う必要があります。
潜在的な回避策を見つけましたが、残念ながら FireFox3 では機能しません (FireFox2 ではある程度機能しますが、十分ではありません)。
誰でも回避策を知っていますか?
actionscript-3 - Flex でドラッグを「受け入れない」にはどうすればよいですか?
呼び出した後DragManager.acceptDrag
、ドラッグを「受け入れない」方法はありますか? ドラッグアンドドロップを受け入れることができるビューがあるとしますが、特定の領域のみです。DragManager.acceptDrag(this)
ユーザーが(ハンドラーから)呼び出したこれらの領域の1つをドラッグすると、ユーザーがこの領域から移動した場合、ドラッグのステータスを受け入れられないに変更し、フィードバックDragEvent.DRAG_OVER
を表示したいと思います。DragManager.NONE
ただし、呼び出しDragManager.acceptDrag(null)
もDragManager.showFeedback(DragManager.NONE)
効果もないようです。ドラッグを受け入れてフィードバック タイプを設定すると、変更できないようです。
明確にするために: ユーザーがドロップできる領域は、コンポーネントでも表示オブジェクトでもありません。実際には、テキスト フィールドのテキスト内の範囲 (選択など) にすぎません。それらが独自のコンポーネントであった場合、それぞれが個別にドラッグ イベントを受け入れるようにすることで解決できたはずです。テキストの上に浮かぶプロキシ コンポーネントを作成してエミュレートすることもできると思いますが、それが必要でない場合は、そうしたくありません。
現在、AIR とブラウザーの両方で動作させることができましたが、それは、オブジェクトをドロップできるはずのテキスト範囲の上にプロキシ コンポーネントを配置することによってのみでした。そうすれば、正しいフィードバックが得られ、ドロップはドラッグ終了時に自動的に受け入れられなくなります。
これは、AIR での D&D の最も奇妙な点です。
ブラウザベースの Flex ではoffsetX
、offsetY
負の値にする必要があります (ドキュメントにはそう書かれていますが、問題なく動作します)。ただし、まったく同じコードを AIR で実行する場合は、オフセットを正にする必要があります。同じ数字ですが、プラスです。それは非常に奇妙です。
@maclemaが機能するものをさらにテストしましたが、AIR で実行した場合はテストしませんでした。AIRでのドラッグ&ドロップは違うようです。フィードバックが正しく表示されないだけでなく、受け入れを取り消すことができないだけでなく、座標も完全にオフになっているため、本当に、本当に奇妙です。AIR ではなくブラウザでアプリケーションを試したところ、ドラッグ アンド ドロップが完全に機能しません。
また、dragEnter
ハンドラーをスキップすると、AIR では問題なく動作しますが、ブラウザーで実行するとすべてが壊れます。
apache-flex - E4X でのノードの削除/交換 (AS3 - Flex)
アプリケーションでリスト/グリッド コントロールを作成し、それをWeb アプリケーションFlex
で使用しています。.NET
非常に長い話を短くするために、シリアル化されたオブジェクトの Web サービスから XML を取得しています。1 ページに表示できるページ数に制限があります。データ グリッドをページ化し、ページ間で並べ替え、いくつかの基本的なフィルター処理を行いました。
ページングに関しては、ページをキーとする辞書を使用し、そのページの XML を保存しています。このようにして、このディクショナリに保存したページにユーザーが戻ってくるたびに、Web サービスにアクセスする代わりに、ローカル メモリから XML を取得できます。基本的に、データのページの Web サービスへの各呼び出しから取得したデータをキャッシュしています。
キャッシュが期限切れになる可能性のあるものがいくつかあります。フィルタリングとソートが主な理由です。ただし、ユーザーはエディタを開いてグリッド内のデータ行を編集できます。編集したデータが原因で、行に表示されるデータが古くなる可能性があります。簡単に Web サービスにアクセスしてページ全体のデータを取得できますが、ページ サイズは実行時に設定されるため、取得するレコードが大量に表示される可能性があります。
それでは、私が経験している問題の核心に触れさせてください。データのページ全体が返されないようにするために、完全に更新されたレコードを要求する Web サービスを呼び出します (エディターがデータの保存を処理します)。
カスタム オブジェクトを使用しているため、サーバー上でそれらを XML にシリアル化する必要があります (これは、ソフトウェアの他の部分で既に処理されています)。すべてのデータは、e4x で XML を介して処理されます。Dictionary のキャッシュは、XMLList として格納されます。
それでは、私のコードをお見せしましょう...
基本的に、置き換えたいノードのIDを取得します。次に、キャッシュの Data プロパティ ( XMLList
) でそれを見つけます。2 行目のフィルターが を返すので、存在することを確認しますXMLList
。
私が抱えている問題は、削除行にあります。その行をリストからそのノードを削除することはできません。削除行の次の行が機能します。ノードをリストに追加しました。
そのノードを置換または削除するにはどうすればよいですか (キャッシュの .Data プロパティのフィルター ステートメントから見つけたノードを意味します)。
これが投稿されたときに、すべての変数のアンダースコアがエスケープされたままにならないことを願っています! そうでなければthis._ == this
._
apache-flex - Adobe Flex アコーディオンのスタイルを変更して、各キャンバス ヘッダーにボタンを含めるにはどうすればよいですか?
私のアコーディオンのサンプルコードは次のとおりです。
次のように、各ヘッダーにボタンを含めたいと思います。
apache-flex - Flex:痛みのないプログラムによるデータバインディングは存在しますか?
これまでにほんの少しのFlex開発を行ってきましたが、mxmlファイルよりもプログラムでコントロールを作成するアプローチを好みました。なぜなら(間違っている場合は訂正してください!)両方の方法があります。つまり、クラス機能は別のActionScriptクラスファイルにありますが、含まれている要素はmxmlで宣言されています。
生産性に関してはそれほど大きな違いはないようですが、プログラムでデータバインディングを実行することは、些細なことではないように思われます。mxmlコンパイラがデータバインディング式をどのように変換するかを調べました。その結果、大量のコールバックが生成され、mxml表現よりもはるかに多くの行が生成されます。だからここに質問があります:傷ついた世界を伴わないプログラムでデータバインディングを行う方法はありますか?
apache-flex - Flash(AS3)を使用してリモートドメインからFlex SWFを呼び出すにはどうすればよいですか?
私はhttp://www.a.com/a.swfでホストされているFlexswfを持っています。SWFをロードしようとする別のdoaminにフラッシュコードがあります。
onLoaderFinishイベントで、リモートSWFからクラスをロードして作成しようとしています。
このコードを実行すると、次の例外が発生します
このコードを機能させる方法はありますか?
xml - AS3 XML 解析のベスト プラクティス
Flash 内のさまざまな種類の XML (具体的には、FeedBurner RSS ファイルと YouTube Data API 応答) の解析で問題が発生しています。を使用しURLLoader
て XML ファイルをロードしEvent.COMPLETE
、新しい XML オブジェクトを作成しています。これは 75% の確率で問題なく動作しますが、時々、次のような例外が発生します。
問題は XML が大きいことでありEvent.COMPLETE
、XML が実際に からダウンロードされる前にイベントが発生した可能性がありURLLoader
ます。私たちが思いついた唯一の解決策は、イベント時にタイマーを設定し、基本的に「数秒待ってから」データの解析を開始することです。確かに、これはこれを行うための最良の方法ではありません。
Flash 内で XML を解析する確実な方法はありますか?
更新 2008 年 9 月 2 日次の結論に達しました。この時点でコード内で例外が発生します。
この部分に try/catch ステートメントを配置し、現在、エラーが発生したときに画面にエラー メッセージを表示しています。私の質問は、不完全なファイルがどのようにしてこの時点に到達するbytesLoaded == bytesTotal
かです。
元の質問をステータス レポートで更新しました。別の質問は、データにアクセスする前にオブジェクトが適切に解析されているかどうかを判断する方法があると思いXML
ます (エラーが、XML が実際にオブジェクトに解析される前にオブジェクトの数をカウントするループが開始されている場合) ?
@Theo:ignoreWhitespace のヒントをありがとう。また、準備が整う前にイベントが呼び出されていることも確認しました (いくつかのテスト トレースを行いました)。mainXMLLoader.bytesLoaded + "/" + mainXMLLoader.bytesLoaded
apache-flex - フレックスでフェードするコンボボックスのラベルを取得する方法
Flex 3 のパネル内にあるコンボ ボックスがあります。基本的には、ActionScript のフェード効果を使用してパネルをフェードしたいと考えています。フェードを正常に動作させることはできますが、コンボ ボックスのラベルはフェードしません。ボタンにも同じ問題があり、フォントを埋め込む必要があることがわかりました。問題ない。使用していたフォントを埋め込むと、ボタンのラベルが正しくフェードしました。コンボボックスに同様のアプローチを試みましたが、選択したアイテムのラベルがフェードしません。
スクリプトの MXML の先頭にフォントのコードを埋め込みます。
私のinit関数で
コンボボックスの mxml:
そして、コンボボックスにフォントを適用するために私が書いたスタイル:
「FontFamily」属性に配置する代わりにスタイルを記述しなければならなかった理由は、「FontFamily」属性がドロップダウンの項目のみを使用するのに、スタイルがコンボボックスのすべてのテキストを正しいフォントにしたためです。正しいフォント。
actionscript-3 - AS3クラスに名前を付けるためのルールは何ですか?
AS3クラスの適切なクラスまたはパッケージ名を決定するために、コードジェネレーター(C#)の正規表現を作成しようとしています。
私はそのクラス名を知っています
- 文字で始まる必要があります(大文字またはその他)
- 他の数字は英数字にすることができます
- スペースを持つことはできません
他に何かありますか?