wise9/enchant.js

Android stock browser fails clearing Scene.

Opened this issue · 2 comments

Android 4.1 browser has issue about canvas clearRect.
http://code.google.com/p/android/issues/detail?id=39247

We should avoid that bug using the patch I have written below or better way.

enchant.CanvasLayer._onexitframe = function() {
    _onexitframe: function() {
    var core = enchant.Core.instance;
    var ctx = this.context;
    // the old method was  ctx.clearRect(0, 0, core.width, core.height);
    this.clearFunc(ctx, 0, 0, core.width, core.height);
    var render = new enchant.Event(enchant.Event.RENDER);
    this._rendering(this, render);
};

// case Android but Scene should have opaque backgroundColor.
enchant.CanvasLayer.clearFunc = function(context, x, y, width, height) {
    context.fillStyle = this.parentNode.backgroundColor;
    context.fillRect(x, y, width, height);
};
// other correct browser
enchant.CanvasLayer.clearFunc = function(context, x, y, width, height) {
    context.clearRect(0, 0, core.width, core.height);
};
// ???
enchant.CanvasLayer.clearFunc = function(context, x, y, width, height) {
    context.canvas.width = context.canvas.width;
};
enchant.CanvasLayer.clearFunc = function(context, x, y, width, height) {
    context.putImageData(clearData, 0, 0);
};

上記のコードで解決するという情報を得ました。