3

C4で図形をアニメーション化する場合、線幅や塗りつぶし色など、図形の未定義のプリセット特性もアニメーション化されます。この問題の回避策または解決策はありますか?

4

1 に答える 1

0

C4Shapesは、デフォルトの色であるC4Red(strokeColorの場合)およびC4Blue(fillColorの場合)を使用するように設定されています。また、デフォルトのanimationDurationは0.25秒に設定されています。

技術的には、C4ShapeはC4Red / C4Blueの色でそれ自体を構築し、キャンバスに当たるとすぐにそれらの色から新しい色へのアニメーションを開始します。

これらを回避し、独自の設定を生成するには、C4Shapeをサブクラス化し、色付け/タイミング/その他のプロパティの変更をクラス独自のinitメソッドに追加します。

MyShapeクラスの実装(.mファイル)には、次のものがあります。

@implementation MyShape
-(id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if(self != nil) {
        self.animationDuration = 0.0f;
        self.fillColor = [UIColor purpleColor];
        self.strokeColor = [UIColor greenColor];
    }
    return self;
}
@end

...そして私のC4WorkSpace.mは次のようになります:

#import "C4WorkSpace.h"
#import "MyShape.h"

@implementation C4WorkSpace

-(void)setup {
    MyShape *ms = [MyShape new];
    [ms ellipse:CGRectMake(100, 100, 100, 100)];
    [self.canvas addShape:ms];
}

@end

現時点ではこれは少し粗雑ですが、オブジェクトがキャンバスに当たる前にデフォルトの色を設定する作業は行っていません。

于 2012-04-30T21:15:37.500 に答える