2017年12月20日 星期三

1220 VS2013 使用ramDisk


1. 下載軟體 SoftPerfect RAMDISK 3.4.8

4.0 版取消免費版, home license開始要收費
download 3.4.8免費版要快手,不知majorgeeks幾時推送4.0
http://www.majorgeeks.com/files/details/softperfect_ram_disk.html
3.4.8 另一個download mirror
http://filehippo.com/download_softperfect-ram-disk/71289/

2. 建立RAMDDISK !並且掛載至系統上 範例教學
http://wuhsiublog.blogspot.tw/2015/07/softperfect-ram-disk.html


3. 利用軟體建立 windows 系統暫儲檔

記得暫存檔路徑一定要有目錄
例如 R:\temp

2017年12月8日 星期五

1208 Cocos2dx - Sprite 更換圖片的方法

http://cocos2dx.logdown.com/tags/%E6%9B%B4%E6%8F%9B%E5%9C%96%E7%89%87

自己程式用到的方式有

刪除舊檔
TextureCache::getInstance()->removeTextureForKey(avatarFileName); //檔名加路徑
//增加至CACHE中
SpriteFrameCache* cache = SpriteFrameCache::getInstance();
auto pNewSprite = Sprite::create(avatarFileName); //開檔載入
if (pNewSprite != nullptr)
{
auto pFrame = pNewSprite->getSpriteFrame();
cache->addSpriteFrame(pFrame, stInfo.FileName);
}

新檔案載入

//將大頭照載入cache 中
SpriteFrameCache* cache = SpriteFrameCache::getInstance();
auto pFrame = cache->getSpriteFrameByName(avatar);
if (pFrame == nullptr)
{ //檢查是否已經在cahce
auto pNewSprite = Sprite::create(fileName); //開檔載入
if (pNewSprite != nullptr)
{
TextureCache::getInstance()->removeTextureForKey(avatar);
//cache->addSpriteFramesWithFile(fileName);
pFrame = pNewSprite->getSpriteFrame();
cache->addSpriteFrame(pFrame, avatar);
}
}
if (pFrame != nullptr)
{
logFile(LOG_DEBUG, "Image name %s (%p)", avatar.c_str(), pFrame);
spritePersion->setSpriteFrame(pFrame);
return true;
}

 參考文件資料

網路上常見的兩種方法

基本上網路上的做法為更換掉 Sprite 中的Texture, 或者將 SpriteFrame 中的DisplayFrame 換掉。
但必須得說, 這些做法都相對麻煩, 而且就效率來說與新建一張Sprite的成本, 差距不大。
於是有些時候我會採用下面的做法。

新建一張Sprite, 將裡面的Texture貼回需要替換的Sprite


Sprite *newSprite = Sprite::create("newImage.png");  
oldSprite->setTexture(newSprite->getTexture());

  • 限制: 更換Sprite 的 Texture時, 需要注意如果是更新有相同名稱的圖檔時, 需要先將舊有的 Cache清除, 不然使用相同名稱時, 會取成舊有Cache中的 Texture檔
      Director::getInstance()->getTextureCache()->removeTextureForKey("photo.png");
    

筆者: 好處是不需要額外處理 Texture中的許多細節, 缺點則是多了一個 create 的呼叫, 在有許多圖檔建立時, App會變得很慢, 所以這種作法請千萬不要在需要一次更換很多圖檔時使用。

cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...