小编Wil*_*eur的帖子

Objective-C:id,访问实例属性,合成?

我对Objective-C很新,我想知道是否有一种简单的方法可以将id设置为对象实例(具有合成属性),并直接获取/设置这些属性,如:

id myID = myInstance;

myID.myProperty = something;
Run Code Online (Sandbox Code Playgroud)

其中myInstance是一个具有名为myProperty的合成属性的对象.当我这样做时:

myInstance.myProperty = something;
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是当我把它换成id时我得到了错误

在'_strong id'类型的对象上找不到属性'myProperty'

在使用id时,我是否必须手动制作getter/setter方法而不是使用synthesize?因为我似乎能够使id执行实例方法.

objective-c synthesize

5
推荐指数
1
解决办法
2779
查看次数

画布中的绘画随着时间的推移逐渐消失 奇怪的alpha分层行为

我正在绘制一幅未被清除的画布,并使其随着时间的推移逐渐消失为纯色,或者在显示背后层的alpha中消失.

我的第一直觉是简单地在图纸上填充一个矩形,每个框架都有一个低的alpha,这样填充颜色就会逐渐淡出画面.

但我发现了一些奇怪的行为(至少对我而言,我确信这是有原因的).填充颜​​色永远不会完全累积.结果的变化取决于油漆和填充颜色相互之间的颜色更浅/更暗.

我发现这个问题,有人和我一样:绘制画布后淡出线条?

最佳答案看起来不错,而且和我试过的一样.但它只适用于白色的黑色.这是同一个不同颜色的小提琴的另一个版本,你会看到绘画永远不会消失,它会留下一个幽灵:http://jsfiddle.net/R4V97/92/

var canvas = document.getElementById("canvas"),
    ctx = canvas.getContext("2d"),
    painting = false,
    lastX = 0,
    lastY = 0;

canvas.width = canvas.height = 600;

canvas.onmousedown = function (e) {
    if (!painting) {
        painting = true;
    } else {
        painting = false;
    }

    lastX = e.pageX - this.offsetLeft;
    lastY = e.pageY - this.offsetTop;
};

canvas.onmousemove = function (e) {
    if (painting) {
        mouseX = e.pageX - this.offsetLeft;
        mouseY = e.pageY - this.offsetTop;

        ctx.strokeStyle = "rgba(255,255,255,1)"; …
Run Code Online (Sandbox Code Playgroud)

javascript drawing alpha canvas

5
推荐指数
2
解决办法
719
查看次数

标签 统计

alpha ×1

canvas ×1

drawing ×1

javascript ×1

objective-c ×1

synthesize ×1