view nodejs/examples/mce/mainmenu.js @ 1496:042587afed2e

Add popup menu for transition
author Thinker K.F. Li <thinker@codemud.net>
date Tue, 03 May 2011 12:35:04 +0800
parents 5a63ab082ef2
children
line wrap: on
line source

// -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*-
// vim: sw=4:ts=8:sts=4
var svg = require("svg");
var mbapp = require("mbapp");
var sys=require("sys");
var animate=require("animate");
var fs = require("fs");
var EPG = require('./epg');
/**
 *   We will fetch the EPG file from the server and fetch all images required for the main category from it.
 *   If these files are cached, we will not fetch it again. Otherwise, we will fetch them. The EPG class is
 *   responsible for the cache management.
 */
function MainMenu(app) 
{
    var self = this;
    var epg = new EPG.EPG();
    epg.registerInitDone(function() { self.init();});
    app.epg = epg;
    //self.init();
}
MainMenu.prototype.init=function()
{
    app.loadSVG("main1.svg");
    app.changeScene(0);

    var i;
    var self = this;
    this.items=[];
    for(i=0;i<8;i++) {
	this.items.push(app.getComponent("cat"+i));
    }
    this.app = app;

    this.lines = [];
    this.line=0;
    this.item = 0;
    this.itemToScene=[0,15,31,47,63,79,95];

    app.addKeyListener(mbapp.KEY_UP, function() { 
	var target = self.items[self.item].toCoord();
	sys.puts(target);
	target.center.move(target.center.x, target.center.y-50);
	sys.puts(target.center.y);
	self.app.refresh();
    });
    app.addKeyListener(mbapp.KEY_DOWN, function() { 
	var target = self.items[self.item].toCoord();
	target.center.move(target.center.x, target.center.y+50);
	sys.puts("move "+target.center.owner.id);
	sys.puts(target.center.y);
	self.app.refresh();
    });

    app.addKeyListener(mbapp.KEY_LEFT, function() { 
        self.item = self.item - 1;
        if (self.item == -1) {
	    self.item = 0;
	    return;
        }
        self.app.runToScene(self.itemToScene[self.item]);
    });
    app.addKeyListener(mbapp.KEY_RIGHT, function() { 
        self.item = self.item + 1;
        if (self.item == self.items.length) {
	    self.item = self.item - 1;
	    return;
        }
        self.app.runToScene(self.itemToScene[self.item]);
    });
    app.addKeyListener(mbapp.KEY_ENTER, function() {
        try {
            //self.app.runToScene(self.itemToScene[self.item]);
            self.key_enter();
	} catch(e) {
	    sys.puts("aaa"+e.stack);
	    for(k in e) {
	        sys.puts(k+"="+e[k]);
	    }
	}
    });
}


MainMenu.prototype.key_enter=function() 
{
    var self = this;
    var target = this.items[this.item].toCoord();
    //var an = new animate.scale(this.app, target, 1, 1/1.5);

    this.changePage(self.item);
    /*
    animate.run(this.app,[an], 0, 0.3,function() {
        var sx = 259 - target.center.x;
        var sy = 355 - target.center.y;
	sys.puts("target="+target.id);
	var an1 = new animate.shift(self.app,target,sx,sy);
	animate.run(self.app, [an1],0,1,function() {
	    self.changePage(self.item);
	});
    });
    */
    return;
    var list=[];
    for(i=0;i<this.items.length;i++) {
	if (i == this.item) continue;
	var obj = this.items[i].toCoord();
	sys.puts(obj);
	if (obj == undefined) continue;
	if (i > this.item) {
	    sx = 1920 - this.items[i].toCoord().center.x;
	    sy = 0;
	} else {
	    sx =  -this.items[i].toCoord().center.x;
	    sy = 0;
	}
	//alpha = new animate.alpha(this.app,this.items[i], 0);
	sys.puts("111");
	an = new animate.shift(this.app,this.items[i].toCoord(), sx,sy);
	list.push(an);
    }
    animate.run(this.app,list, 0, 1);
    sys.puts("enter");
}

MainMenu.prototype.onNextPage=function() {
    sys.puts("aaaaaaaaaaaaaaaaaaaaaa");
    this.app.changeScene(97);
    var l = this.app.getComponent('line2');
    var coord = l.toCoord();
    if (coord == undefined) return;
    sys.puts(coord.isdup);
    sys.puts(coord.id);
    sys.puts(coord.refid);
    try {
        l.set_text('aaaaaaqa');
    } catch(e) {
	sys.puts(e);
    }
    this.app.refresh();
}
MainMenu.prototype.changePage=function(item) {
    this.app.epg.getList(item,this.onNextPage);
}

exports.MainMenu=MainMenu;