0

タッチ「移動フェーズ」イベントで回転させたいサイズ1162 x 16の画像があります。問題は、画像が回転すると「ピクセル化」されてスクランブルされることです。スケーリングされていませんが、画像で試しましたサイズは 128 x 128 ですが、画像はピクセル化されていません。画像のサイズが大きいためでしょうか !!

回転は画像構造に影響しますか??? なぜそれが起こるのか誰にも分かりますか?

または、誰かが回避策を持っている場合は、それを手伝ってくれませんか。

正方形にした後の更新されたコードは次のとおりです。

local bck = display.newRect (0,0,display.contentWidth,display.contentHeight)
bck.x = display.contentWidth * 0.5
bck.y = display.contentHeight * 0.5
bck:setFillColor (255,255,255)

local img = display.newImageRect ("laser1.png",1170,1170)
img.x = display.contentWidth * 0.5
img.y = display.contentHeight * 0.5


local  function getRotation(PointX1,PointY1,PointX2,PointY2)
  --display.getCurrentStage():setFocus ( Bug )
  local atan2 = math.atan2
  local pi = 3.14159265358

  local deltax = PointX2 - PointX1
  local deltay = PointY2 - PointY1

  local currentAngle = ((atan2(deltay,deltax) )* 180.0) / pi
  local rotationDigree = currentAngle - img.previousAngle;

  img.previousAngle  = currentAngle

  return rotationDigree;
 end

local function handleTouch ( event )
 img.previousAngle = 1
 if( event.phase == "moved" ) then
    img.rotation = getRotation ( img.x , img.y , event.x , event.y )
 end
end


Runtime:addEventListener ("touch",handleTouch)       
4

1 に答える 1

0

あなたのイメージは正方形ではありません。これは、(たとえば) 90 度回転すると、16 x 1162 の画像を 1162 x 16 のスペースに収めようとすることを意味します。

これは、画像が一方の次元で押しつぶされ、他方の次元で引き伸ばされていることを意味します。

ソース画像とターゲット画像の両方を 1162 x 1162 にして、透明または元の画像にない既知の色の境界線を追加して、回転が完了したら削除できるようにする必要があります。

128×128のテスト画像は正方形なので動作します。

于 2011-10-24T09:41:41.680 に答える