じ☆ve冰风 发表于 7 天前

Error reading from list?

Hey guys, other achievement systems that were available didn't suit my needs so I started making my own.I've run into an issue with one of my Window's lists though.

Long short, I am reading from an external JSON, everything works correctly, and I can pull information using "Khali.achievements.x", x replaced with .name, .id, etc.The menu opens, I can switch between selections, but I have 3 different games in one package.They load and are populated fine, but I need to update the achievement title, description, and icon which is above the selection window.

Here is the code:
                Code:        
Window_Achievements_Info.prototype.makeAchievementList = function () {   this._list = [];   for (var i = 1; i < Khali.achievements.length; i++) {         if (Khali.achievements.game === game) {             this.addAchievement(Khali.achievements);         }   }   console.log(this._list); };

What it does:Checks for the game title to see if it matches, adds it to a separate list as an object.

When it works:Drawing the list of all of the achievement icons (it's setup like the old Xbox 360 achievement menu)

Where it doesn't work:
                Code:        
this.drawText(this._list.game, x + this.iconPadding, y, this.contents.width, 'left');


If I add console.log(this._list), it will populate the array and show the appropriate information.
If I add console.log(this._list.game) immediately under this line, it will crash with error "Cannot read property 'game' of undefined.

I can understand it's trying to read a property that isn't defined.I don't understand how this._list populates the array with
                Code:        
0:   game: "Game 1"

Why is it both defined, and undefined at the same time?How is that possible?


It does exclusively work correctly when called from drawItem though.
                Code:        
Window_Achievements_Info.prototype.drawItem = function (index) {   var rect = this.itemRect(index);   this.drawFace(this._list.icon, 2, rect.x + this.textPadding(), rect.y + this.textPadding(), iconSizeMini, iconSizeMini); };


I can enter this.drawText(this._list.name here and it will populate, but as soon as I try to call that from refresh(), or anywhere else for that matter, it claims it's undefined.


Got it.


本贴来自国际rpgmaker官方论坛作者:Khali处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/error-reading-from-list.181064/
页: [1]
查看完整版本: Error reading from list?