Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Ошибка: "__proto__" (http://www.flasher.ru/forum/showthread.php?t=169605)

Avrilka 08.10.2011 13:42

Ошибка: "__proto__"
 
Код AS1/AS2:

 
var fx_p = function (caster,n,level){
                        Skills.dat = []
                        Skills.dat['caster'] = caster;
                        Skills.dat['n'] = n
                        Skills.dat['level'] = level
                        var cell
 
 
 
 
                        cell = Map.grid[caster.y][caster.x+1]
                        if (cell.free==1 && cell.pass != 0) {
                                for (var i=2; i<6; i++) {
                                          cell = Map.grid[caster.y][caster.x+i]
                                          if (cell.pass == 0) break;
                                          cell.highlightCell('RA')
                                          cell.onRollOver = function() {
                                                  Map.grid[caster.y][this.x].highlightCell('RA_Red')
                                                  if (Map.grid[caster.y][this.x].free != 1 || Map.grid[caster.y][this.x+1].pass == 0) return;
                                                Map.grid[caster.y][this.x+1].highlightCell('RA_Red')
                                                if (Map.grid[caster.y][this.x+1].free != 1 || Map.grid[caster.y][this.x+2].pass == 0) return;
                                                  Map.grid[caster.y][this.x+2].highlightCell('RA_Red')
                                                if (Map.grid[caster.y][this.x+2].free != 1 || Map.grid[caster.y][this.x+3].pass == 0) return;
                                                  Map.grid[caster.y][this.x+3].highlightCell('RA_Red')
                                                    }
                                            cell.onRollOut = function() {
                                                    Map.grid[caster.y][this.x].highlightCell('RA')
                                                  if (Map.grid[caster.y][this.x].free != 1 || Map.grid[caster.y][this.x+1].pass == 0) return;
                                                if(Math.abs(this.x-caster.x)>=5)Map.grid[caster.y][this.x+1].dehighlightCell()
                                                    else Map.grid[caster.y][this.x+1].highlightCell('RA')
                                                if (Map.grid[caster.y][this.x+1].free != 1 || Map.grid[caster.y][this.x+2].pass == 0) return;
                                                if(Math.abs(this.x-caster.x)>=4)Map.grid[caster.y][this.x+2].dehighlightCell()
                                                  else Map.grid[caster.y][this.x+2].highlightCell('RA')
                                                if (Map.grid[caster.y][this.x+2].free != 1 || Map.grid[caster.y][this.x+3].pass == 0) return;
                                                if(Math.abs(this.x-caster.x)>=3)Map.grid[caster.y][this.x+3].dehighlightCell()
                                                    else Map.grid[caster.y][this.x+3].highlightCell('RA')
                                                }
                                          cell.onPress = function () {
                                                var n = Skills.dat['n']
                                            var level = Skills.dat['level']
                                            Skills.skills[n]['fx_base'].call(Skills.dat['caster'], Skills.dat['caster'], this,n, level)
                                        }
                                        if (cell.free != 1) break;
                                }
                        }
 
 
 
 
                        cell = Map.grid[caster.y][caster.x-1]
                        if (cell.free!=0 && cell.pass != 0) {
                                for (var i=2; i<6; i++) {
                                          cell = Map.grid[caster.y][caster.x-i]
                                          if (cell.pass == 0) break;
                                          cell.highlightCell('RA')
                                          cell.onRollOver = function() {
                                                  Map.grid[caster.y][this.x].highlightCell('RA_Red')
                                                  if (Map.grid[caster.y][this.x].free != 1 || Map.grid[caster.y][this.x-1].pass == 0) return;
                                                Map.grid[caster.y][this.x-1].highlightCell('RA_Red')
                                                  if (Map.grid[caster.y][this.x-1].free != 1 || Map.grid[caster.y][this.x-2].pass == 0) return;
                                                Map.grid[caster.y][this.x-2].highlightCell('RA_Red')
                                                  if (Map.grid[caster.y][this.x-2].free != 1 || Map.grid[caster.y][this.x-3].pass == 0) return;
                                                Map.grid[caster.y][this.x-3].highlightCell('RA_Red')
                                                    }
                                            cell.onRollOut = function() {
                                                    Map.grid[caster.y][this.x].highlightCell('RA')
                                                if (Map.grid[caster.y][this.x].free != 1 || Map.grid[caster.y][this.x-1].pass == 0) return;
                                                  if(Math.abs(caster.x-this.x)>=5)Map.grid[caster.y][this.x-1].dehighlightCell()
                                                    else Map.grid[caster.y][this.x-1].highlightCell('RA')
                                                if (Map.grid[caster.y][this.x-1].free != 1 || Map.grid[caster.y][this.x-2].pass == 0) return;
                                                if(Math.abs(caster.x-this.x)>=4)Map.grid[caster.y][this.x-2].dehighlightCell()
                                                  else Map.grid[caster.y][this.x-2].highlightCell('RA')
                                                if (Map.grid[caster.y][this.x-2].free != 1 || Map.grid[caster.y][this.x-3].pass == 0) return;
                                                if(Math.abs(caster.x-this.x)>=3)Map.grid[caster.y][this.x-3].dehighlightCell()
                                                    else Map.grid[caster.y][this.x-3].highlightCell('RA')
                                                }
                                          cell.onPress = function () {
                                                var n = Skills.dat['n']
                                            var level = Skills.dat['level']
                                            Skills.skills[n]['fx_base'].call(Skills.dat['caster'], Skills.dat['caster'], this,n, level)
                                        }
                                        if (cell.free == 0) break;
                                }
                        }
 
 
 
                        cell = Map.grid[caster.y+1][caster.x]
                        if (cell.free!=0 && cell.pass != 0) {
                                for (var i=2; i<6; i++) {
                                          cell = Map.grid[caster.y+i][caster.x]
                                          if (cell.pass == 0) break;
                                          cell.highlightCell('RA')
                                          cell.onRollOver = function() { 
                                                  Map.grid[this.y][caster.x].highlightCell('RA_Red')
                                                  if (Map.grid[this.y][caster.x].free != 1 || Map.grid[this.y+1][caster.x].pass == 0) return;
                                                Map.grid[this.y+1][caster.x].highlightCell('RA_Red')
                                                  if (Map.grid[this.y+1][caster.x].free != 1 || Map.grid[this.y+2][caster.x].pass == 0) return;
                                                Map.grid[this.y+2][caster.x].highlightCell('RA_Red')
                                                  if (Map.grid[this.y+2][caster.x].free != 1 || Map.grid[this.y+3][caster.x].pass == 0) return;
                                                Map.grid[this.y+3][caster.x].highlightCell('RA_Red')
                                                    }
                                            cell.onRollOut = function() {
                                                    Map.grid[this.y][caster.x].highlightCell('RA')
                                                  if (Map.grid[this.y][caster.x].free != 1 || Map.grid[this.y+1][caster.x].pass == 0) return;
                                                if(Math.abs(this.y-caster.y)>=5)Map.grid[this.y+1][caster.x].dehighlightCell()
                                                    else Map.grid[caster.y+this.y+1][caster.x].highlightCell('RA')
                                                if (Map.grid[this.y+1][caster.x].free != 1 || Map.grid[this.y+2][caster.x].pass == 0) return;
                                                if(Math.abs(this.y-caster.y)>=4)Map.grid[this.y+2][caster.x].dehighlightCell()
                                                  else Map.grid[caster.y+this.y+2][caster.x].highlightCell('RA')
                                                if (Map.grid[this.y+2][caster.x].free != 1 || Map.grid[this.y+3][caster.x].pass == 0) return;
                                                if(Math.abs(this.y-caster.y)>=3)Map.grid[this.y+3][caster.x].dehighlightCell()
                                                    else Map.grid[caster.y+this.y+3][caster.x].highlightCell('RA')
                                                }
                                          cell.onPress = function () {
                                                var n = Skills.dat['n']
                                            var level = Skills.dat['level']
                                            Skills.skills[n]['fx_base'].call(Skills.dat['caster'], Skills.dat['caster'], this,n, level)
                                        }
                                        if (cell.free == 0) break;
                                }
                        }
 
 
 
                        cell = Map.grid[caster.y-i][caster.x]
                        if (cell.free!=0 && cell.pass != 0) {
                                for (var i=2; i<6; i++) {
                                          cell = Map.grid[caster.y-i][caster.x]
                                          if (cell.pass == 0) break;
                                          cell.highlightCell('RA')
                                          cell.onRollOver = function() {
                                                  Map.grid[this.y][caster.x].highlightCell('RA_Red')
                                                  if (Map.grid[this.y][caster.x].free != 1 || Map.grid[this.y-1][caster.x].pass == 0) return;
                                                Map.grid[this.y-1][caster.x].highlightCell('RA_Red')
                                                  if (Map.grid[this.y-1][caster.x].free != 1 || Map.grid[this.y-2][caster.x].pass == 0) return;
                                                Map.grid[this.y-2][caster.x].highlightCell('RA_Red')
                                                  if (Map.grid[this.y-2][caster.x].free != 1 || Map.grid[this.y-3][caster.x].pass == 0) return;
                                                Map.grid[this.y-3][caster.x].highlightCell('RA_Red')
                                                    }
                                            cell.onRollOut = function() {
                                                    Map.grid[this.y][caster.x].highlightCell('RA')
                                                  if (Map.grid[this.y][caster.x].free != 1 || Map.grid[this.y-1][caster.x].pass == 0) return;
                                                if(Math.abs(caster.y-this.y)>=5)Map.grid[this.y-1][caster.x].dehighlightCell()
                                                    else Map.grid[this.y-1][caster.x].highlightCell('RA')
                                                if (Map.grid[this.y-1][caster.x].free != 1 || Map.grid[this.y-2][caster.x].pass == 0) return;
                                                if(Math.abs(caster.y-this.y)>=4)Map.grid[-this.y-2][caster.x].dehighlightCell()
                                                  else Map.grid[this.y-2][caster.x].highlightCell('RA')
                                                if (Map.grid[this.y-2][caster.x].free != 1 || Map.grid[this.y-3][caster.x].pass == 0) return;
                                                if(Math.abs(caster.y-this.y)>=3)Map.grid[this.y-3][caster.x].dehighlightCell()
                                                    else Map.grid[this.y-3][caster.x].highlightCell('RA')
                                                }
                                          cell.onPress = function () {
                                                var n = Skills.dat['n']
                                            var level = Skills.dat['level']
                                            Skills.skills[n]['fx_base'].call(Skills.dat['caster'], Skills.dat['caster'], this,n, level)
                                        }
                                        if (cell.free == 0) break;
                                }
                        }
 
                }


Код:

        __proto__: Branch between 3128 and 41309 exceeds 32K span.

Похоже что компилятору нехватает памяти, если я закоменчу 1 из 4
Код AS1/AS2:

if (cell.free==1 && cell.pass != 0){

то все пашет. Хелп! не сталкивался раньше с таким :o

dark256 08.10.2011 14:27

Что-то ужасающее.
Теоретически - вы СТОЛЬКО всего в объект пихаете - что для его представления именно и не хватает объема памяти....
Для единичного объекта.

Опишите словами - что этот ваш код пытается делать?

Avrilka 08.10.2011 16:08

Это подготовка скилла, на самом деле ничего страшного нету. выделяет в 4 направлениях клетки, если нажать на одну из них - вызовется скилл. так же если на клетку навести мышку, то она засветится, увести перестанет светиться

etc 11.10.2011 22:59

Avrilka, а вы знаете, что такое ссылка на объект? За каким фигом вы ломаете клавиатуру, несколько сотен раз копируя выражение «Map.grid[this.y][caster.x]» и подобные, в геометрической прогрессии ухудшая читабельность кода?

Котяра 12.10.2011 00:42

Очень страшно.
А по теме - это гайзенбаг.
Пару раз встречался с такими особенно на больших проектах. Помогает Delete ASO files и другие танцы с бубнами.

Avrilka 12.10.2011 11:25

Начнем с того что это не совсем мой код

А под ссылкой вы имеете ввиду

Код AS1/AS2:

a = Map.grid[this.y][caster.x]

То да, я знаю. Как раз она тут и обьявляется:

Код AS1/AS2:

cell = Map.grid[caster.y][caster.x-i]

а делать:
Код AS1/AS2:

cell1= Map.grid[caster.y][caster.x-1]
cell2 = Map.grid[caster.y][caster.x-2]
cell3 = Map.grid[caster.y][caster.x-3]
cell4 = Map.grid[caster.y][caster.x-4]

И последующее обращение к переменным cell1 cell2 ... лично для меня наоборот увеличивает колличество ошибок

Добавлено через 1 минуту
А по ошибке я так понял, что слишком неоптимизированное выделение так?


Часовой пояс GMT +4, время: 17:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.