2011-06-29 7 views
2

自分のアプリケーションにJcropを使用しようとしていますが、バグがありました。私はデモページに行って、そのバグもそこに存在します。これを作成する方法は次のとおりです。このデモページへJcropのバグ、minSize + aspectRatio

ゴー http://deepliquid.com/projects/Jcrop/demos.php?demo=advanced

次のオプションがチェックされている

の「設定に、minSize/maxSizeの」
「サイズ変更可能な選択」 「アスペクト比」を 「の選択を移動することができる」ことを確認してください

選択領域を作成し、左上隅にドラッグし、選択範囲の右下隅をつかんで(サイズを変更する場合と同様に)、イメージの左上隅にドラッグします。

イメージの左上隅を渡すと、選択領域が0x0ピクセルの選択に折りたたまれます。

このバグは、アスペクト比が設定されている場合にのみ発生します。それ以外の場合は正常に動作します。

誰かがこのバグを修正できる可能性があるこのプラグインでハッキングした経験があるのだろうかと思います。私は一日中それを経験しており、まだそれを把握することができませんでした。

--Edit-- これで数時間を費やした後、私はバグをほとんど修正することができました。私は次のコードを変更しました。

 // Magic %-) 
     if(xx >= x1) { // right side <-- Changed > to >= 
      if(xx - x1 < min_x) { 
      xx = x1 + min_x; 
      } else if (xx - x1 > max_x) { 
      xx = x1 + max_x; 
      } 
      if(yy > y1) { 
      yy = y1 + (xx - x1)/aspect; 
      } else { 
      yy = y1 - (xx - x1)/aspect; 
      } 
     } else if (xx <= x1) { // left side <-- Changed < to <= 
      if(x1 - xx < min_x) { 
      xx = x1 - min_x 
      } else if (x1 - xx > max_x) { 
      xx = x1 - max_x; 
      } 
      if(yy > y1) { 
      yy = y1 + (x1 - xx)/aspect; 
      } else { 
      yy = y1 - (x1 - xx)/aspect; 
      } 
     } 

これは、それが崩壊するのを止めましたが、それでも少しバギーです。

--END Edit--

+1

私はJcropの著者です。私はこの問題を認識しています。あなたが見つけたように、それはかなり厄介です。私はそれを解決するためにいくつかのコミュニティの助けが必要かもしれません。上記のコードを見て、それらの変更を適用できるかどうかを確認します。私はまたそれに別の亀裂を取ろうとします。私のウェブサイトを通して私に連絡してください。投稿ありがとう! –

+0

実際、それは0.9.8で唯一のバグであると思われますが、実際にはかなりうまくいくようです。私はまだブラウザをチェックしていない。 – copacetic

+0

バグがまだ0.9.9にあるように見えます – YesMan85

答えて

3

より安定したバージョンは、次のことのようです:

if(xx===x1){xx=x1+min_x;} 

// Magic %-) 
if (xx > x1) { // right side 
    if (xx - x1 < min_x) { 
     xx = x1 + min_x; 
    } else if (xx - x1 > max_x) { 
     xx = x1 + max_x; 
    } 
    if (yy > y1) { 
     yy = y1 + (xx - x1)/aspect; 
    } else { 
     yy = y1 - (xx - x1)/aspect; 
    } 
} else if (xx < x1) { // left side 
    if (x1 - xx < min_x) { 
     xx = x1 - min_x; 
    } else if (x1 - xx > max_x) { 
     xx = x1 - max_x; 
    } 
    if (yy > y1) { 
     yy = y1 + (x1 - xx)/aspect; 
    } else { 
     yy = y1 - (x1 - xx)/aspect; 
    } 
} 
0

ここで私は他の人が投稿より良い行動を生成だと思う私のパッチは、です。とりわけ、削除するものの1つは、minSizeを使用してエッジの近くでサイドを切り替えるときのデモで見られるポップトゥエッジです。

@@ -578,44 +578,36 @@ 
     } 

     // Magic %-) 
-  if (xx > x1) { // right side 
+  if (xx >= x1) { // right side 
      if (xx - x1 < min_x) { 
      xx = x1 + min_x; 
      } else if (xx - x1 > max_x) { 
      xx = x1 + max_x; 
      } 
-   if (yy > y1) { 
+   if (yy >= y1) { 
      yy = y1 + (xx - x1)/aspect; 
      } else { 
      yy = y1 - (xx - x1)/aspect; 
      } 
-  } else if (xx < x1) { // left side 
+  } else { // left side 
      if (x1 - xx < min_x) { 
      xx = x1 - min_x; 
      } else if (x1 - xx > max_x) { 
      xx = x1 - max_x; 
      } 
-   if (yy > y1) { 
+   if (yy >= y1) { 
      yy = y1 + (x1 - xx)/aspect; 
      } else { 
      yy = y1 - (x1 - xx)/aspect; 
      } 
     } 

-  if (xx < 0) { 
-   x1 -= xx; 
-   xx = 0; 
-  } else if (xx > boundx) { 
-   x1 -= xx - boundx; 
-   xx = boundx; 
+  if (xx < 0 || xx > boundx) { 
+   xx = x1 + (x1 - xx) 
     } 

-  if (yy < 0) { 
-   y1 -= yy; 
-   yy = 0; 
-  } else if (yy > boundy) { 
-   y1 -= yy - boundy; 
-   yy = boundy; 
+  if (yy < 0 || yy > boundy) { 
+   yy = y1 + (y1 - yy) 
     } 
関連する問題