2

「画像プロパティ」の例を変更せずに実行すると、画像の色が失われます (例に付随するビデオとは異なります)。何が起こっているのか分かりますか?

更新: この問題があるのは、含まれている C4 画像 (C4Sky.png および C4Table.png) のみであることに気付きました。

4

1 に答える 1

1

問題は解決しません。C4Imageの画像プロパティにバグがあるようです。

イメージ コードで見られるエラー

解決策は、表示したい C4Image へのポインターを使用し、ポインターが指している C4Image をキャンバスに含めることです。キャンバスから古い画像を必ず削除してください。オブジェクト比較を使用すると、余分なブール変数が不要になります。

    #import "C4Workspace.h"

    @implementation C4WorkSpace {
        //define 2 invisible images
        C4Image *i1, *i2;
        //define a pointer to a selected image
        C4Image *visibleImage;
    }

    -(void)setup {
        i1 = [C4Image imageNamed:@"C4Sky.png"];
        i2 = [C4Image imageNamed:@"C4Table.png"];

        visibleImage = i1;

        i1.center = i2.center = self.canvas.center;

        [self.canvas addImage:visibleImage];
    }

    -(void)touchesBegan {
        [self.canvas removeObject:visibleImage]; // remove old image

        // see what the pointer is pointing to and update accordingly
        if (visibleImage == i1)
            visibleImage = i2;
        else    
            visibleImage = i1;

        // add the newly referenced C4Image to canvas
        [self.canvas addImage:visibleImage]; 
    }

    @end

このコードを保持する要点へのリンク: https://gist.github.com/drart/5695449

于 2013-06-03T00:17:57.790 に答える