0

彼は、私は自分のイメージをインスタンス変数として使用しているため (非常に頻繁にすべてのイメージを描画する必要があるため)、次のように (私の NSView で):

@implementation BeatView
- (id)initWithFrame:(NSRect)frame{
self = [super initWithFrame:frame];
if (self) {
    bpm=160;
    mbpm=0;
    NSImage *bz_BG = [NSImage imageNamed:@"mw_bg01.png"];
    NSImage *bz_PaAc = [NSImage imageNamed:@"pattactive.png"];
    NSImage *bz_PaIa = [NSImage imageNamed:@"pattinactive.png"];
}
return self;
}

そして描かれた:

- (void)drawRect:(NSRect)dirtyRect{
     NSPoint imagePos = NSMakePoint(0, 0);
    [bz_BG dissolveToPoint:imagePos fraction:1.0];
}

エラーはありません (イメージ変数が使用されていないという警告のみ)。実行中、画像は描画されません。ここで何が間違っていますか?ありがとう...

4

2 に答える 2

2

インスタンス変数を初期化していません。メソッド中に新しい変数を作成しているinitため、警告が表示されます。

コードを次のように変更します

_bz_BG = [NSImage imageNamed:@"mw_bg01.png"];
_bz_PaAc = [NSImage imageNamed:@"pattactive.png"];
_bz_PaIa = [NSImage imageNamed:@"pattinactive.png"];

そして、ヘッダー ファイルで、これらの変数を次のように宣言します。

@property (nonatomic, retain) NSImage *bz_BG;
@property (nonatomic, retain) NSImage *bz_PaAc;
@property (nonatomic, retain) NSImage *bz_PaIa;

デフォルトでは、XCode (バージョン 4 以降だと思います) は、先頭にアンダースコアを付けてプロパティを合成します (@synthesize bz_BG = _bz_BG;実装ファイルの先頭に置くのと同じです)。したがって、参照を_bz_BG代わりに変更してください

于 2013-02-26T18:16:50.327 に答える
0

drawToPoint:の代わりにメソッドを使用するのはdissolveToPointどうですか?

于 2013-02-26T18:01:13.100 に答える