/**
 * Map
 * Created by lovell on 16/6/20.
 */

pg.Map = cc.Class.extend({
    _elements : null
});

/**
 * 创建Map
 * @returns {*}
 */
pg.Map.create = function ()
{
    var res = new pg.Map();
    res.clear();
    return res;
};

/**
 * Map元素的长度
 * @returns {*}
 */
pg.Map.prototype.size = function () {
    return this._elements.length;
};

/**
 * 判断Map是否为空
 * @returns {boolean}
 */
pg.Map.prototype.isEmpty = function () {
    return (this._elements.length < 1);
};

pg.Map.prototype.clear = function () {
    this._elements = [];
};

/**
 * 向Map中增加元素
 * @param key
 * @param value
 */
pg.Map.prototype.put = function (key,value) {
    if (this.containKey(key)) {
        this.remove(key);
    }
    this._elements.push({
        key: key,        value: value
    });
};

/**
 * 向Map中插入元素
 * @param index
 * @param key
 * @param value
 */
pg.Map.prototype.insert = function (index,key,value) {
    if (this.containKey(key)) {
        this.remove(key);
    }
    this._elements.splice(index,0,{
        key: key,        value: value
    });
};

/**
 * 删除指定Key的元素
 * @param key
 * @returns {boolean}
 */
pg.Map.prototype.remove = function (key) {
    var ret = false;
    try {
        for (var i=0; i<this._elements.length; i++) {
            if (this._elements[i].key == key)
            {
                this._elements.splice(i,1);
                return true;
            }
        }
    } catch (e) {
        ret = false;
    }
    return ret;
};

/**
 * 获取指定Key的元素值Value,失败返回NULL
 * @param key
 * @returns {*}
 */
pg.Map.prototype.get = function (key) {
    try {
        for (var i = 0; i < this._elements.length; i++) {
            if (this._elements[i].key == key) {
                return this._elements[i].value;
            }
        }
    } catch (e) {
        return null;
    }
};

/**
 * 设置指定Key的元素值Value,失败返回FALSE
 * @param key
 * @param value
 * @returns {boolean}
 */
pg.Map.prototype.set = function (key,value) {
    try {
        for (var i = 0; i < this._elements.length; i++) {
            if (this._elements[i].key == key) {
                this._elements[i].value = value;
                return true;
            }
        }
    } catch (e) {
        return false;
    }
};

/**
 * 通过Index获取对应的Value
 * @param index
 * @returns {*}
 */
pg.Map.prototype.getValueByIndex = function (index) {
    return this._elements[index].value;
};

/**
 * 通过Key获取对应的Index
 * @param key
 * @returns {number}
 */
pg.Map.prototype.getIndexByKey = function (key) {
    try {
        for (i = 0; i < this._elements.length; i++) {
            if (this._elements[i].key == key) {
                return i;
            }
        }
    } catch (e) {
        return -1;
    }
};

/**
 * 通过Index获得Key
 * @param index
 * @returns {*}
 */
pg.Map.prototype.getKeyByIndex = function (index) {
    return this._elements[index].key;
};

pg.Map.prototype.removeByIndex = function (index) {
    this.remove(this._elements[index].key);
};

/**
 * 获取指定索引的元素
 * @param index
 * @returns {*}
 */
pg.Map.prototype.element = function (index) {
    if (index < 0 || index >= this._elements.length) {
        return null;
    }
    return this._elements[index];
};

/**
 * 判断Map中是否含有指定KEY的元素
 * @param key
 * @returns {boolean}
 */
pg.Map.prototype.containKey = function (key) {
    var ret = false;
    try {
        for (var i = 0; i < this._elements.length; i++) {
            if (this._elements[i].key == key) {
                ret = true;
            }
        }
    } catch (e) {
        ret = false;
    }
    return ret;
};

/**
 * 判断Map中是否含有指定VALUE的元素
 * @param value
 * @returns {boolean}
 */
pg.Map.prototype.containValue = function (value) {
    var ret = false;
    try {
        for (var i = 0; i < this._elements.length; i++) {
            if (this._elements[i].value == value) {
                ret = true;
            }
        }
    } catch (e) {
        ret = false;
    }
    return ret;
};

/**
 * 获取Map中所有VALUE的数组
 * @returns {Array}
 */
pg.Map.prototype.values = function () {
    var arr = [];
    for (var i = 0; i < this._elements.length; i++) {
        arr.push(this._elements[i].value);
    }
    return arr;
};

/**
 * 获取Map中所有KEY的数组
 * @returns {Array}
 */
pg.Map.prototype.keys = function () {
    var arr = [];
    for (var i = 0; i < this._elements.length; i++) {
        arr.push(this._elements[i].key);
    }
    return arr;
};



/**************************************************************************************************************************************************************************************
 * Created by lovell on 8/1/16.
 */
pg.Vector = cc.Class.extend({
    _array: null
});

pg.Vector.create = function () {
    var res = new pg.Vector();
    if (res.init()) {
        return res;
    }
    res = null;
    return null;
};

pg.Vector.prototype.init = function () {
    this._array = [];
    return true;
};

pg.Vector.prototype.push = function (obj) {
    this._array.push(obj);
};

pg.Vector.prototype.at = function (index) {
    if (index < 0 || index >= this._array.length) {
        return null;
    }
    return this._array[index];
};

pg.Vector.prototype.erase = function (obj) {
    for (var i = 0; i < this._array.length; i++) {
        if (this._array[i] == obj) {
            this._array.splice(i,1);
            break;
        }
    }
};

pg.Vector.prototype.eraseAt = function (index) {
    this._array.splice(index,1);
};

pg.Vector.prototype.contains = function (obj) {
    for (var i = 0; i < this._array.length; i++) {
        if (this._array[i] == obj) {
            return true;
        }
    }
    return false;
};

pg.Vector.prototype.size = function () {
    return this._array.length;
};

pg.Vector.prototype.insert = function (index,obj) {
    this._array.splice(index,obj);
};

pg.Vector.prototype.clear = function () {
    this._array.length = 0;
};

Cocos2d-JS 实现Map Vector的更多相关文章

  1. 在编译时编译Xcode中的C类错误:stl vector

    我有一个C类,用gcc和可视化工作室中的寡妇在linux上编译.boid.h:并在boid.cpp中:但是,当我在Xcode中编译此代码时,我收到以下错误:有任何想法吗?我以为你可以使用C/C++代码并在Xcode中编译没有问题?.m文件被视为具有Objective-C扩展名的.c文件..mm文件被视为具有Objective-C扩展名的.cpp文件,那么它被称为Objective-C只需将.m文件重命名为.mm,右键单击或按住Ctrl键并在Xcode中的文件中选择重命名.

  2. 【swift】15-0520 字典

    字典.count()字典.isEmpty字典[key]=value//增加一个值字典[key]=value2//修改一个值字典.updateValue//返回一个optional类型的值,需要更新的key不存在则更新失败,所以一般用if语句进行判断,if字典.updateValue{println}else{println}用binding显示出值。iflet常量=字典.updateValue{println(“”)}else{println(“”)}显示字典中所有的键值对:forin字典{println

  3. Swift-字典

  4. swift2 运算符函数

    运算符函数前置或后置运算符函数前标注prefix或postfix组合赋值表达式比较运算符自定义运算符在自定义运算符中还可以设定自定义运算符的优先级和结合性,来处理更复杂的任务。

  5. Swift 字典的常用方法

    /***要正确使用字典,也需要一些条件*1,字典键值对的键和值的类型必须明确,可以直接指定,也可以类似数组直接赋值由编译器自动识别*2,字典必须要初始化*3,键的类型必须是可以被哈希Hashable的**///字典的几种声明方式常用方法见下方代码苹果开发群:414319235欢迎加入欢迎讨论

  6. swift 2.0 字典

    //6.字典---的特点:无序性这个无序性是指字典内部存放的元素顺序跟我们定义时写的元素顺序是没有对应的,但是实质上,字典内部的元素是有序的。),至于为什么,之后会有专门的解说。//并且,字典的key值是唯一的,不能重复。

  7. Swift高级运算符(Advanced Operators)

    按位运算符~1变0,0变1。$全1得1,其他为0|有1得1,其他为0^相异为1,相同为0整体右移,左边填0。算子函数上面讲解的都是简单的运算符,下面的是为对象添加运算符,使之可计算。符号在中间前缀和后缀前缀关键字prefix后缀关键字postfix复合赋值运算符这里用+=举例。

  8. swift * 字典/Dictionary初始化以及增、删、改、遍历

    学习笔记1、字典初始化vardict=[:]//初始化无类型空字典dict=["1":"aaa","2":"bbb"]print(dict)dict=[1:"1","2":2]//key和value都是不定类型的print(dict)letdict2:Dictionary=["1":111,"2":222]//限定键值类型print(dict2)letdict3:[Stri

  9. Swift基础学习2

    1.数组的创建及操作2.Range的创建3.Dictionary的创建及操作4.func5.闭包

  10. swift dictionary 是否存在key

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部