これは私がすぐに見るべきである明白な答えを持っているかもしれません、しかし私はあいまいなものさえ見つけませんでした。助けてください。バグを疑うことさえしたくなりますが、それはありそうにありません。
zz点でクロスする関数を作ろうとしていますが、部分的に動作します。
関数の最後にあるブレークポイントで停止しているときにデバッグで変数にカーソルを合わせると、値が表示されます。NSMakePointの結果z1とz2をコメントとして適切な行に挿入しました。
NSMakePointが1つの場所で失敗し、プログラムの他の場所で機能するのはなぜですか?
最初に出現する場合は、zz.xを10ずつインクリメントする必要があります。代わりに、zz.yを10ずつインクリメントします。2
番目のオカレンスでは、zz.xを10デクリメントする必要があります。代わりに、zz.yを10ずつ減らします。
次の2回の発生では、正常に機能します。
最初に、一番上のコメントに示されているように、引数内でxをインクリメントしてみました。次に、示されているように、引数の前にxをインクリメントしてみました。CGFloatだけでなくfloatも試してみました。
ここで何が問題になっていますか?
#import "untitled.h"
CGFloat xx,yy;
NSPoint z1,z2, zz;
NSBezierPath *path;
void markpoint (NSPoint zz){ //zz= 133.333, 100 OK
// z2= NSMakePoint(zz.x+10,zz.y); I tried this first and failed;
then I broke out the increment as follows:
xx=zz.x+10; //xx= 143.333 OK
yy=zz.y; //yy= 100 OK
z1= NSMakePoint(xx,yy); //z1= 133.333,110 but should be 143.333,100
[path moveToPoint:z1];
z2= NSMakePoint(zz.x-10,zz.y); //z2= 133.333, 90 but should be 123.333,100
[path lineToPoint:z2];
z1= NSMakePoint(zz.x,zz.y+10); //z1= 133.333, 110 OK
[path moveToPoint:z1];
z2= NSMakePoint(zz.x,zz.y-10); //z2= 133.333, 90 OK
[path lineToPoint:z2];
}
副次的な問題:floatとCGFloatがBezierシリーズの関数とCocoaのNSPointで交換可能であることを主張または否定する場所を見つけることができませんでした。彼らは?