CAAT icon indicating copy to clipboard operation
CAAT copied to clipboard

Actor SetAsButton Touch not working on CocoonJS 1.3 ?

Open takhimi opened this issue 12 years ago • 3 comments

Hi Ive tested some of your sample but it does not work with cocoonjs ? when I touch the button , cocoonjs will return error touchstart node.ownerdocument [undefined].

This is my codes. (basically I just use ur demo and mixed it up with actor as button). When click with mouse it is working but when I zip it and put into cocoonjs it wont work....

window.addEventListener('load', function(){ CAAT.Module.Initialization.Template.init(800,500,"_c1", [ {id:"botones",url:"images/botones.png"} ],_scene1 );

}, false);

function createNumber(director, n, color) { var actor = new CAAT.Foundation.UI.TextActor(). setFont("140px Lucida-sans"). setText("Scene " + n). calcTextSize(director). setAlign("center"). setTextFillStyle(color). setOutline(true). cacheAsBitmap(). enableEvents(false). addBehavior( new CAAT.Behavior.RotateBehavior(). setFrameTime(0, 20000). setValues(0, 2 * Math.PI). setCycle(true));

actor.centerAt(director.width / 2, director.height / 2);
return actor;

}

function createButton(director, rotated) { var actor = new CAAT.Foundation.Actor(). setSize(60, 60). centerAt(director.width - 40, director.height - 40);

actor.paint = function (director, time) {

    var ctx = director.ctx;
    ctx.save();
    if (rotated) {
        ctx.translate(this.width, 0);
        ctx.scale(-1, 1);
    }

    ctx.fillStyle = this.pointed ? 'orange' : '#f3f';
    ctx.fillRect(0, 0, this.width, this.height);

    ctx.strokeStyle = this.pointed ? 'red' : 'black';
    ctx.strokeRect(0, 0, this.width, this.height);

    ctx.strokeStyle = 'white';
    ctx.beginPath();
    ctx.moveTo(5, 10);
    ctx.lineTo(20, 10);
    ctx.lineTo(15, 5);

    ctx.moveTo(20, 10);
    ctx.lineTo(15, 15);

    ctx.lineWidth = 2;
    ctx.lineJoin = 'round';
    ctx.lineCap = 'round';
    ctx.stroke();
    ctx.restore();

    ctx.font = '10px sans-serif';
    ctx.fillStyle = 'black';
    ctx.fillText(
        rotated ? 'Prev Scene' : 'Next Scene',
        3,
        45);
};

return actor;

}

function createPattern(director, color) { var actor = new CAAT.Foundation.Actor(). setSize(director.width, director.height). enableEvents(false); actor.paint = function (director, time) {

    var i, j, ctx;

    ctx = director.ctx;
    ctx.beginPath();

    for (j = 0.5; j < director.width; j += 20) {
        ctx.moveTo(j, 0);
        ctx.lineTo(j, director.height);
    }

    for (i = 0.5; i < director.height; i += 20) {
        ctx.moveTo(0, i);
        ctx.lineTo(director.width, i);
    }

    ctx.strokeStyle = color;
    ctx.stroke();
};

return actor;

}

function _scene1(director) { var ci= new CAAT.Foundation.SpriteImage().initialize( director.getImage('botones'), 7, 3 );

var scene1 = director.createScene();    
scene1.addChild(createPattern(director, '#33f'));
scene1.addChild(createNumber(director, 1, '#33f'));
var button = createButton(director, false);

button.mouseClick = function (e) {
    director.switchToNextScene(
            2000,
            false,
            true
    )
}

var b1 = new CAAT.Foundation.Actor().setAsButton(ci.getRef(), 0, 1, 2, 0, function (button) {
    director.switchToNextScene(
             2000,
             false,
             true
     )


}).setLocation(0, 30);
var container1 = new CAAT.ActorContainer().setBounds(0, 0, director.width, director.height);
container1.addChild(b1);
container1.addChild(button);
scene1.addChild(container1);



var scene2 = director.createScene();
scene2.addChild(createPattern(director, '#f33'));
scene2.addChild(createNumber(director, 2, '#f33'));
var button2 = createButton(director, true);
button2.mouseClick = function (e) {

    director.switchToPrevScene(
            2000,
            false,
            true
    )
}

var b2 = new CAAT.Foundation.Actor().setAsButton(ci.getRef(), 0, 1, 2, 0, function (button) {
    director.switchToPrevScene(
         2000,
         false,
         true
 )

}).setLocation(0, 30);

var container2 = new CAAT.ActorContainer().setBounds(0, 0, director.width, director.height);
container2.addChild(b2);
container2.addChild(button2);
scene2.addChild(container2);

CAAT.loop(60);

}

takhimi avatar Apr 20 '13 00:04 takhimi

same for me. did you manage to solve the problem?

jdponomarev avatar May 19 '13 15:05 jdponomarev

wilk do this afternoon. a byg must have been introduced. sorry about that.

same for me. did you manage to solve the problem?

— Reply to this email directly or view it on GitHubhttps://github.com/hyperandroid/CAAT/issues/144#issuecomment-18119624 .

hyperandroid avatar May 20 '13 00:05 hyperandroid

I don't know if this is related, but when using touch input the button reacts (executes the associated function) but does not get depressed. I mean, there's no visual feedback on a button click. I know that using touch a "hover" functionality like when using a mouse is not possible, but at least a feedback on a successful "click" would be nice.

Was this functionality present before and is the absence of it related to this bug, or should we add this functionality ourselves?

arnuschky avatar Oct 06 '13 08:10 arnuschky