何が間違っている私のドラッグリッドコードについて教えてください。

StackOverflow https://stackoverflow.com/questions/118540

  •  02-07-2019
  •  | 
  •  

質問

まず、私はかなりくすっぽんをグリッドはかなり簡単に、しかし思いが奇トラブルにこの状況や数学ⅰでも仕事を具体的に何が違います。

この状況

い"という概念には、グリッド、Yの手順を正確にY_STEP除の手順は細かい作業なので無視し、もうお試しいただきましたか?

グリッドには抽象的な座標空間をラインナップしていきたい魔法のオフセットがうY_OFFSET

スナップのグリッドのもう次のコードは(python)

def snapToGrid(originalPos, offset, step):
    index = int((originalPos - offset) / step) #truncates the remainder away
    return index * gap + offset

そのカーソル位置Y_OFFSETとY_STEPに機能するかを返しまい、最寄りの床のy位置グリッド

表示される仕事のオリジナルシナリオしかし、私はを考慮し、このスクロール可能なものを取得し少し変わっている。

スクロールとして基本として取得できますので、もらってビューポートがカウントの距離をスクロールY軸に沿って、直オフセットのものとします。

このスニペットのカーソルのmouseMotionコード:

def mouseMotion(self, event):
    pixelPos = event.pos[Y]
    odePos = Scroll.pixelPosToOdePos(pixelPos)
    self.tool.positionChanged(odePos)

いい眺めが最初にスクロールモジュールの翻訳からピクセル位置の概要座標空間で、そのツールpositionChangedる機能の概要座標空間の価値のスナップのYの一歩です。

ここに関連するスクロールコード

def pixelPosToOdePos(pixelPos):
    offsetPixelPos = pixelPos - self.viewPortOffset
    return pixelsToOde(offsetPixelPos)

def pixelsToOde(pixels):
    return float(pixels) / float(pixels_in_an_ode_unit)

ツールのコード更新

def positionChanged(self, newPos):
    self.snappedPos = snapToGrid(originalPos, Y_OFFSET, Y_STEP)

最後の関連するチャンクの際は、ツールへの描画そのものです。このスクロールオブジェクトを変化させるツールを痛座標空間での位置を、画面のピクセル位置は、こちらのコード:

#in Tool
def render(self, screen):
    Scroll.render(screen, self.image, self.snappedPos)

#in Scroll
def render(self, screen, image, odePos):
    pixelPos = self.odePosToPixelPos(odePos)
    screen.blit(image, pixelPos) # screen is a surface from pygame for the curious

def odePosToPixelPos(self.odePos):
    offsetPos = odePos + self.viewPortOffset
    return odeToPixels(offsetPos)

def odeToPixels(odeUnits):
    return int(odeUnits * pixels_in_an_ode_unit)

今回のお話は、長い説明をします。希望だっ...

問題は後ほど現在決定しているを得るた時のスクロールを描画像を失うとの整合をとりながら、カーソルを移動させます。
ですっぽんのYの一歩を正確に1ステップ以下のカーソルを移動させます。また、が表示される位相のallignment.
一部の巻物である1およびその他の巻物のスポットです。
なんてことはありませんout1以上でも大巾に軽減に有効なグリッド。

最もできるってのはどん切り捨一部のデータに間違ったスポットなアイデアなどにどのように両この行動です。

誰にでも親の座標空間でのスクロールとすっぽん?

役に立ちましたか?

解決

Ok、私の答えを自分の問題ここで、alexkて、intを切り詰めた私の間違いです。

を行った後はモデルによるmath.floor().

謝罪に問題が含まれない情報を十分に本当にどのような動作するように、この問題です。なかなかのビットの情報となります。

についての誤植、と思い場合に使用する文脈におくる...の視点からのpositionChanged()関数のパラメータを新しい位置ます。
の視点からのsnapToGrid()関数のパラメータは元の位置が変更さを痛めます。の言語のようなことなので私のイベント処理コードおよびその他の部分は私の一般サービスのコードです。ったもののしたものに変更するための例

他のヒント

い商品につけられたタにpositionChanged()?

def positionChanged(self, newPos):
    self.snappedPos = snapToGrid(newPos, Y_OFFSET, Y_STEP)

しょうがより一ピクセルの精度に問題が浮。に変更してみてくださいおsnapToGrid()この:

def snapToGrid(originalPos, offset, step):
    EPS = 1e-6
    index = int((originalPos - offset) / step  + EPS) #truncates the remainder away
    return index * gap + offset

の答えする場合もありますの商品につけられたタがまったく見えない...

残念ながらの変更snapToGridな違いとは思わないことになる。

なにより一ピクセルのものでよY_STEP.遊びでもいいので正確の時点の画面をスクロールの件名お見積もりにそのトップ画面の、容疑者は常微分方程式の位置がゼロなので私は私の推測の問題は小さいまたは負の値です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top