問題タブ [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.
javascript - ヒット テスト SVG 形状?
SVG 仕様の一部を実装しているブラウザー (Firefox など) は、無料でヒット テストを行ってくれます。SVG オブジェクトにマウスダウン リスナーをアタッチすると、形状がクリックされるたびに通知が届きます。これは、特に複雑な多角形の場合は驚くべきことです。
この機能をもう少しヒット テストに利用できる方法はないかと考えています。特定の長方形が私の SVG 形状と交差するかどうかを知りたいです。
たとえば、要素に 3 つの複雑なポリゴンを追加します。今、長方形 (40, 40, 100, 100) がそれらのいずれかと交差しているかどうかを知りたいです。このすべてのコードを自分で追加する代わりに、すでに利用可能な優れたヒット テスト サポートに接続する方法を知っている人はいますか?
ありがとう
pixelsense - "GeometryHitTestParameters' HitTestParameters are not supported on 'Viewport3DVisual" エラーは新しい SDK からのものですか?
夏の間、私は Surface アプリケーションを開発するチームの一員でした。このアプリケーションに小さな変更を加える予定でしたが、前回まったく同じコードを実行したときには存在しなかったエラーが発生しました。
エラー メッセージは「GeometryHitTestParameters' HitTestParameters are not supported on 'Viewport3DVisual」で、VisualTreeHelper の一部のパラメーターについて不平を言っています。HitTest()。
コードは同じですが、動作環境が若干異なります。
- 古い SDK が見つからなかったため、Surface SDK 1.0 SP1 を使用する必要がありました。
- コンピューターは Windows 7 を実行しています
すべての例外をキャッチして無視することで、コードを実行しています。Surface SDK SP1 が 'Viewport3DVisual の使用方法を変更した可能性があるかどうか、または SDK が 1.0 ではスローされない例外をスローしているかどうかを知っている人はいますか?
この例外をマスクすることでアプリケーションが以前のように動作するようになるのか、それとも動作の変更が後で現れて逆効果になるのかを知りたいです。
mouseover - マウスの X & Y を 3D モデル座標に変換する
処理中に単純な 3D ドラッグ アンド ドロップ インターフェイスを構築しており、マウスがオブジェクト上を移動したことを検出したいと考えています。3D モデル座標を画面空間に表示するために、マトリックス変換を行う必要があると想像できます...
私はこの作業の単純なバージョンを持っていますが、問題は、カメラがシーン内を移動すると、取得した座標がおかしくなることです。
では、タイル座標を画面空間に変換するにはどうすればよいでしょうか (screenX と screenY が正しく機能していないため)。
更新: 最終的に、これを行う方法について、Processing サイトから 2 つの例を見つけました。villinthaspamに感謝します。
iphone - UIView にプロトコルに準拠するデリゲートがあるかどうかを判断する方法
独自のビュー境界の外で、タッチ ドラッグ/ポジショニングに大きく依存するカスタム クラスを作成しました。さまざまな関連メソッドで定義された関連プロトコルがあります。このプロトコルを使用するものの例は、カスタム クラスからオブジェクトをドロップできるようにするビューです。
私が抱えている問題は、その位置の下に気にするオブジェクトがあるかどうかに関係なく、タッチがいつ終了するか (オブジェクトが「ドロップ」される) を把握することです。(「ケア」については、「プロトコルに準拠」を読んでください!)。
- (CALayer *)hitTest:(CGPoint)thePoint
それが私のプロトコルに準拠するビューである場合、それは簡単です。またはそれらの行に沿って何かを使用してそれを見つけ、 conformsToProtocol:@protocol(xx)
.
ただし、それが UIViewController のサブビューであるビューである場合 (たとえば)、UIViewController (デリゲートとして) がプロトコルに準拠していても、ビューはプロトコルに準拠していません。ビューが本当に通知を受け取りたい場合は、メッセージを送信するデリゲートが誰であるかを把握できる必要があります。
したがって、本質的に、各ビューが自分のプロトコルに準拠しているかどうかを確認しながら、最下位の UIView からビュー階層をたどるにはどうすればよいでしょうか。そうでない場合は、デリゲートがあり、それは準拠していますか..?
それとも、私が考えもしなかったもっと簡単な方法がありますか?
どうもありがとう..
解決済み
moshyのおかげで、解決策があります。
これは、ビューを返すかnil
、何も適合しない場合に返します。
再度、感謝します..
actionscript-3 - AS3: 表示オブジェクト x, y のポイント?
現在、hitTestPoint オブジェクトで使用する表示オブジェクトの x と y で更新する必要があるポイントがあります。新しいポイント var を作成し、その x と y を継続的に更新することなく、表示オブジェクトからポイントを取得する方法はありますか?
iphone - ローテーション後にiPhoneのhitTestが壊れた
いくつかのCALayerサブクラスを含むUIViewがあります。次のコードを使用して、タッチイベントが対応するレイヤーを検出しています。
これは、デバイスが回転するまで正常に機能します。デバイスを回転させると、現在のすべてのレイヤーがスーパーレイヤーから削除され、新しい方向に合うように新しいCALayerが作成されます。新しいレイヤーは正しく挿入され、正しい方向で表示できます。
ローテーション後、hitTestメソッドは常にレイヤーに対してnullを返します。180度回転すると、返されるレイヤーが回転前のその位置にあることに気付きました。つまり、左上のレイヤーに触れると、180度回転すると右下のレイヤーになります。ヒットテストの座標は、(0,0)が左上にある状態で期待どおりに印刷されます。回転するたびにレイヤーを再描画しますが、何らかの理由で、ホームボタンが下部にある「正しい」方法にマッピングされているようです。ローテーションを処理した後、関数呼び出しなどがありませんか?
乾杯、アダム
apache-flex - Flex で DragDrop 画像が重ならないようにする
基本的にFlex Builder 3でパズルを作成しようとしています.配列からキャンバスに画像を表示し、キャンバス上でドラッグアンドドロップできます。私の問題は、画像が互いに重なり合わないようにしたくないということです。これを防ぐ方法についてのアイデアはありますか??
ドラッグするとオーバーラップできますが、ドロップするとオーバーラップできません。別の画像がまだ占有されていない最も近いポイントに「スナップ」する必要があります。
java - サーバーの検証が必要なゲームでの弾丸ヒット テストに適しているパターンはどれですか?
クライアントとJavaソケットサーバーでフラッシュを使用するPvPゲームを設計したいのですが、サーバーが弾道を検証し、弾丸が不正行為からターゲットに当たったかどうかを検証する必要があります。
これを行う方法を提供するチュートリアルまたはペーパーはありますか?
wpf - WPF: OnRender とヒット テスト
OnRender を使用して画面に何かを描画する場合、描画されたグラフィックスでヒット テストを実行する方法はありますか?
サンプルコード
明らかに、ヒット テストを実行するために必要な描画された Rectangle への参照がありませんか、それとも間違っていますか? 私は DrawingVisual を使用できることを知っています。私の理解が正しいかどうか知りたいのですが、OnRender を使用して何かを描画すると、描画されたものに対してヒット テストを実行できませんか?
firefox - Firefox 3.6 ヒット テストで重複する SVG 形状
Google マップのルート案内と同じように、2 つの SVG パスを描画しています。
私が抱えている問題は、2 番目のパスのバウンディング ボックスが重なっている最初のパスのセクションが、mouseover、mouseout、またはクリック イベントを発生させないことです。イベント ハンドラーはパス dom 要素にありますが、マウスがパスのバウンディング ボックス内のどこかにあると、イベントが発生するように見えます。
とにかくこれを回避する方法はありますか?Chrome、Safari、Opera では、この問題はありません。Firefox では SVG のみです。
テスト例を作成しました。円の上にマウスを移動するたびに、その色を警告するはずです。緑の円に一番右側から近づくと、赤い円のコンテナの幅 300px の外側にあるため、機能することがわかります。ただし、緑色の円の上または下から近づくと、何も得られません。Chrome/Safari/Opera で同じことを試してみると、期待どおりに動作することがわかります。