继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

游戏引擎的obj部分更新了!

小昊子
关注TA
已关注
手记 12
粉丝 54
获赞 183

游戏引擎的obj部分更新了!
obj.js:

var gameObjs = [];

var role = function (image,width,height,x,y,angle,name,pos) {
    // console.log("new role...");
    var obj = {};
    obj.name = name;
    obj.width = width;
    obj.height = height;
    obj.image = image;
    obj.x = x;
    obj.y = y;
    obj.angle = angle;
    obj.copyNum = 0;
    obj.textColor = "#fff";
    obj.textSize = "20px";
    obj.textWeight = "bold";
    obj.textAlign = "center";
    obj.pos = pos;

    obj.children = [];

    // console.log("name:" + obj.name);
    // console.log("html:" + $("#" + pos).html());

    $("#" + pos).html($("#" + pos).html() + "<div id=\"" + obj.name + "\"></div>");

    obj.update = function () {
        $("#" + this.name).css({
                "background-image": "url(" + this.image + ")",
                "position": "absolute",
                "top": this.y + "px",
                "left": this.x + "px",
                "width": this.width,
                "height": this.height,
                "transform": "rotate(" + this.angle + "deg)",
                "color": this.textColor,
                "font-size": this.textSize,
                "font-weight": this.textWeight,
                "text-align": this.textAlign,
                "cursor":"pointer"
            }
        );
    };
    obj.change = function (newImage,newWidth,newHeight,angle,speed){
        this.image = newImage;
        this.width = newWidth;
        this.height = newHeight;

        $("#" + this.name).css({
            "transform": "rotate(" + (0 - this.angle) + "deg)"
        });

        this.angle = angle;
        this.define("speed",speed);
        this.update();
    };
    obj.setText = function (text,color,size,weight,anlign){
        this.textColor = color;
        this.textSize = size;
        this.textWeight = weight;
        this.textAlign = anlign;
        $("#" + this.name).html(text);
        this.update();
    };
    obj.define = function (att,val){
        this[att] = val;
    };
    obj.get = function (attName){
        return this[attName];
    };
    obj.copy = function (){
        var newObj = role(this.image,this.width,this.height,this.x,this.y,this.angle,this.name + this.copyNum,this.pos);
        this.children.push(newObj);
        this.copyNum++;
        return newObj;
    };
    obj.randomCopyY = function (x,height) {
        var childObj = this.copy();
        childObj.move(x,Math.floor(Math.random() * height));
        return childObj;
    };
    obj.randomCopyX = function (y,width) {
        var childObj = this.copy();
        childObj.move(Math.floor(Math.random() * width),y);
        return childObj;
    };
    obj.delete = function (){
        this.width = null;
        this.height = null;
        this.image = null;
        this.x = null;
        this.y = null;
        this.angle = null;
        this.copyNum = null;
        this.textColor = null;
        this.textSize = null;
        this.textWeight = null;
        this.textAlign = null;

        $("#" + this.name).remove();
        this.name = null;
    };
    obj.addMove = function () {
        this.define("speed",10);
    };
    obj.setMove = function (speed) {
        this.define("speed",speed);
    };
    obj.updatePos = function () {
        $("#" + this.name).css({
            "z-index": this.get("pos-z"),
        });
    };
    obj.addPosZ = function () {
        this.define("pos-z",gameObjs.length);
    };
    obj.setPosZ = function (z) {
        this.define("pos-z",z);
        this.updatePos();
    };
    obj.run = function (angle) {
        var x = $("#" + this.name).offset().left;
        var y = $("#" + this.name).offset().top;
        x += Math.cos(angle / 180 * Math.PI) * this.get("speed");
        y += Math.sin(angle / 180 * Math.PI) * this.get("speed");
        this.move(x,y);
        this.update();
    };
    obj.move = function (x,y){
        this.x = x;
        this.y = y;
        this.update();
    };

    gameObjs.push(obj);

    obj.update();
    return obj;
};
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP