問題タブ [hittest]
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.
silverlight - 無効なコントロールのテストをヒットする方法はありますか?
コントロールが有効かどうかに関係なく、マウスカーソルの下にあるコントロールを検出しようとしています。
VisualTreeHelper.FindElementsInHostCoordinates
IsEnabled
プロパティが に設定されているコントロールを無視しますfalse
。この動作を変更する方法、または特定の画面位置でコントロールを見つける他の方法はありますか?
ありがとう。
flash - 動的に配置された MovieClip インスタンスの hitTestObject
ステージ上に動的に配置されたインスタンスで hitTestObject を実行しようとしています。
エラーを受け取る:
アクションスクリプト:
flash - ステージ上に動的に配置された複数のインスタンスで hitTestObject を使用する方法は? (AS3)
ライブラリからのリンケージを介して MovieClip の複数のインスタンスを配置することにより、それらのインスタンスに hitTestObject を適用する方法を知っている人はいますか?
AS3 でパックマン スタイルのフラッシュ ゲームを作成しています。役に立つかもしれない良いチュートリアルを知っている人がいたら、遠慮なく教えてください。
silverlight - Silverlight TextBlock で個々の文字をヒット テストする方法
少し抽象的な質問で申し訳ありません。私は必ずしも特定のテスト済みソリューションを探しているわけではありませんが、最適なソリューションを見つけるために試してみることができるいくつかの提案を探しています。すべての提案は大歓迎です - より多様で創造的であるほど良い.
問題は次のとおりです。
TextBlock
ラッピング テキストの段落を含むSilverlightがあります。複数のフォント サイズなど、さまざまな書式設定が適用された複数の実行が含まれる場合があります。左、右、中央、または両端揃えにすることができ、右から左へのテキストフローを使用するランを含めることができます。マウス ポインターの下にある文字を検出できるようにする必要があります。WPF ではメソッドを使用してこの問題を簡単に解決できGetPositionFromPoint
ましたが、Silverlight にはこのメソッドが存在しないため、独創的な回避策が必要です。
私が試みたアプローチの 1 つは、テキストを個々の単語に分割し、それぞれTextBlock
の単語に for を作成することです。それらを I でレンダリングすることによりWrapPanel
、各単語の開始位置を識別できるため、ヒット テスト ゾーンを絞り込むことができます。実際のターゲット文字を見つけることは、その幅がマウスの位置に合うまで、文字ごとにターゲット単語を構築することです。
私の実験手法は機能しますが、2 つの欠点があります。1 つ目はパフォーマンスです。これは、多数の個々のTextBlock
インスタンスをWrapPanel
. 2 番目の懸念は、私の改行アルゴリズム (大雑把にスペースとハイフンに基づく) がTextBlock
、UI で使用される実数で使用されるものと正確に一致しない可能性があることです。Unicode Line Breaking Algorithmを読んだだけで、これはそれ自体が主題全体であることがわかりました。特定の段落コンテンツの条件下でデザインが壊れるリスクを冒したくない
理想的には、 main に対して直接測定できる手法を見つけたいと思っていますが、TextBlock
どんなに奇妙に見えても、革新的な提案を歓迎します.
どうもありがとう、ティム
wpf - WPF UserControl HitTest
私は次のユーザーコントロールを持っています:ドットとその名前:
これはカッコいい。
今、私はパネルを持っています、魔女で私はマウスで打った私のストップポイントを回復する必要があります:
したがって、ご覧のとおり、HitTestがUserControl(StopPoint)をそのままではなく、そのコンポーネント(TextBlock、Ellipse、さらにはBorder)を識別するという問題があります。
ビジネスオブジェクトをStopPoint要素に関連付けるので、MouseHitting時に取得する必要があり、構成要素ではありません。
それを行う方法はありますか?
編集:
フィルタを使用する(現在、HitTestCallbackにはまったく入力されません):
wpf - IsMouseOverは、ContextMenuまたは検証エラーを超えたときにFalseを返しますか?
トリガーを使用してIsMouseOverがtrueに設定されている場合に展開するコントロールがあります。そのコントロール内には、いくつかの基本的な検証があるテキストボックスがいくつかあります。私の問題は、検証エラーが発生し、ユーザーがテキストボックスの周りの赤い境界線上にマウスを置くと(ユーザーがマウスをテキストボックスの中央に移動して値を変更するときに発生することがほぼ保証されています)、IsMouseOverがfalseに設定され、コントロールが閉じます。 。
テキストボックスの検証エラー:
コントロールを表示するトリガー:
更新: テキストボックスを右クリックしてコンテキストメニューを開くと、IsMouseOverもFalseに設定されます
iphone - CALayer -hitTest: containsPoint を考慮していません: オーバーロード
もう一度戻って、前に投稿したのと同じ機能で別の質問をしてください。
AIEnemyUnit の真上に表示されるように、ユーザーが敵の上にドラッグする爆弾があります。この爆弾では-containsPoint:
、 -hitTest: がレイヤーを通過できるように、ドラッグ中に NO を返すように CALayer を実装しました。基本的に、このタイプのヒット テストは、CGImageRef コンテキストのみを使用している限り、これらの「パススルー」レイヤーで正常に機能していました。しかし、爆弾に追加の効果を与えるためにサブレイヤーの実装を開始すると、 -hitTest:
すぐに壊れました。明らかに、新しいレイヤーが をキャプチャしていました-hitTest:
。これらのレイヤーをオーバーロードして同じ手法を実装しようとしました-containsPoint:
が、通過するのではなく、爆弾のジェネリック CALayer サブクラスを返していました。
より良い方法はありますか?
actionscript-3 - BitmapData.draw() 行列の問題
BitmapData.draw() メソッドが、透明度を使用する .png から画像データを正確に差し引いていないという問題に遭遇しました。
この動作を示すテスト ファイルをまとめました。ここにあります: http://www.filedropper.com/shield_1
簡単に言うと、画面上部からスプライトが落ちてきて、画面下部のスプライトと交差すると、落ちていたスプライトが下部のスプライトの塊を取り出します。スプライトが下のスプライトと交差した後にスプライトの x と y の位置をリセットし、下のスプライトと再び交差すると、同じサイズのチャンクがスプライトから取り出されないことを除いて、これはすべて機能しています。ボトム。
これを十分に説明していない場合は、申し訳ありません。私が投稿したファイルを少し見ていただければ、それは理にかなっています。
ライブラリ内に ShieldBase と SnowBall の Linkage 値を持つ 2 つの png ファイルを必要とするコードを次に示します。
問題は、hitTest および/または BitmapData.draw() が期待どおりに機能していないことにあると思います。
どうもありがとう、
デヴィン
silverlight - Silverlight の画像で不透明なピクセル ヒットのみをテスト可能にする最良の方法は何ですか?
msdn in Silverlight によると、画像は画像/メディア表示領域 (基本的には高さと幅) でテスト可能です。画像ファイル内の透過/フル アルファ ピクセルは引き続きヒット テスト可能です。私の質問は、Silverlight の画像で不透明なピクセル ヒットのみをテスト可能にする最善の方法は何ですか?
iphone - hitTestが間違ったUIViewを返す
スクロールビューの小さなビューを含むビュー階層があります。各ビューには、ボタンなどのサブビューを含めることができます。
何らかの理由で、ビューのボタンがクリックされません。これをさらに調査すると、スクロールビューはtouchBeganイベントを受信しますが、ボタンは受信しないことがわかりました。hitTest:event:メッセージを呼び出すと、制限内であってもボタンが返されないことが示されます。
スクロールビューでのタッチの位置、hitTestから返されたアイテム、locationInViewを呼び出した場合のタッチの位置:期待されるアイテムの使用、および期待されるアイテムの階層(フレームが印刷されている)を説明するログ出力を含めました。この出力から、ボタンが呼び出されるべきだったと推測できます...
誰かがこれを説明できますか?私は何かが足りないのですか?
更新:UIWindowとVCViewsContainerViewを除き、すべてのビューはinitWithFrame:を使用してプログラムで作成されます。ボタンの場合は、buttonWithType:を使用します。VCViewContainerはCGRectZeroを使用して初期化され、UIImageViewが作成されると、そのフレームは画像のサイズ+画像の下部にあるラベル用の追加スペースに設定されます。
アップデート2:同じ場所で[self.layer hitTest:location]を呼び出すと、正しいビューのレイヤーが表示されます。何が起きてる...?