Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   SharedObject ОШИБКА#2007 (http://www.flasher.ru/forum/showthread.php?t=211508)

Arman Turalin 13.09.2015 23:26

SharedObject ОШИБКА#2007
 
Всем здравствуйте=)
Пишу первый раз игру для андроид, и вот такая получилась загвостка: я хотел, чтобы сохранялся локально рекорд, очки и т.д.
Но к сожаление выдает ошибку почему то...
пишу вот такой код

Код AS3:

var mySO:SharedObject = SharedObject.getLocal("HeavenWayDFS");
best_text.text = mySO.data.best_e;
 
function povtor1(e:Event):void {
        shet.text = score_text.text;
        if (!mySO.data.best_e) {
        best_text.text = 0;
        }
        if (shet.text>best_text.text) {
                shet.text = mySO.data.best_e;
                mySO.flush ();
        }
stage.addEventListener(Event.ENTER_FRAME, povtor1);

И мне выдает ошибку вот такого характера

Цитата:

TypeError: Error #2007: Parameter text must be non-null.
at flash.text::TextField/set text()
at newformateksnoopdog77_fla::MainTimeline/frame2()[newformateksnoopdog77_fla.MainTimeline::frame2:18]
at flash.display::MovieClip/gotoAndStop()
at newformateksnoopdog77_fla::MainTimeline/game1()[newformateksnoopdog77_fla.MainTimeline::frame1:19]
У меня игрушка состоит из двух сцен: первая сцена это МЕНЮ, а вторая сама ИГРА
Естественно код пишу в сцену ИГРА, так как там выводится рекорд

Для того чтобы перейти назад в меню, я написал такой код, который удаляет все слушатели сцены ИГРА
Код AS3:

function povtor2(e:MouseEvent):void{
        playsound('button');
        gotoAndStop("munen","menu");
        stage.removeEventListener(Event.ENTER_FRAME, povtor1);
        stage.removeEventListener(Event.ENTER_FRAME, exmpalebaur);
        stage.removeEventListener(MouseEvent.CLICK, flybaur);
        stage.removeEventListener(Event.ENTER_FRAME, emmoving);
        stage.removeEventListener(Event.ENTER_FRAME, gmov);
        stage.removeEventListener(Event.ENTER_FRAME, emreset);
        stage.removeEventListener(Event.ENTER_FRAME, ochki);
        stage.removeEventListener(Event.ENTER_FRAME, fonmoving);
        stage.removeEventListener(Event.ENTER_FRAME, fmoving);
        stage.removeEventListener(Event.ENTER_FRAME, overmoving);
        stage.removeEventListener(Event.ENTER_FRAME, stapfon);
        stage.removeEventListener(Event.ENTER_FRAME, stapfon1);
        stage.removeEventListener(Event.ENTER_FRAME, stapgr);
        stage.removeEventListener(Event.ENTER_FRAME, stapgr1);
        stage.removeEventListener(Event.ENTER_FRAME, charstop);
        stage.removeEventListener(Event.ENTER_FRAME, stapforest);
        stage.removeEventListener(Event.ENTER_FRAME, oblaka_1);
        stage.removeEventListener(Event.ENTER_FRAME, oblaka);
        stage.removeEventListener(Event.ENTER_FRAME, letobl_1);
        stage.removeEventListener(Event.ENTER_FRAME, letobl);
        stage.removeEventListener(Event.ENTER_FRAME, piles);
        stage.removeEventListener(Event.ENTER_FRAME, piles1);
        stage.removeEventListener(Event.ENTER_FRAME, musoff);
 
}

может в нем проблемы?
Подскажите пожалуйста... Уже долгое время маюсь над тем, чтобы сохранить достигнутый счет при игре...

caseyryan 14.09.2015 06:36

Цитата:

Пишу первый раз игру для андроид
С таким уровнем знаний языка в целом, рановато писать для андроида.

Текст - это String, а не Number. Нельзя задать параметру text значение 0.
Задавать нужно так:
Код AS3:

best_text.text = "0";

Дальше еще одна хрень, которая так же кинет ошибку:
Код AS3:

shet.text>best_text.text

Что это вообще? Текстовые данные так не сравниваются

А вот это:
Код AS3:

function povtor2(e:MouseEvent):void{
        playsound('button');
        gotoAndStop("munen","menu");
        stage.removeEventListener(Event.ENTER_FRAME, povtor1);
        stage.removeEventListener(Event.ENTER_FRAME, exmpalebaur);
        stage.removeEventListener(MouseEvent.CLICK, flybaur);
        stage.removeEventListener(Event.ENTER_FRAME, emmoving);
        stage.removeEventListener(Event.ENTER_FRAME, gmov);
        stage.removeEventListener(Event.ENTER_FRAME, emreset);
        stage.removeEventListener(Event.ENTER_FRAME, ochki);
        stage.removeEventListener(Event.ENTER_FRAME, fonmoving);
        stage.removeEventListener(Event.ENTER_FRAME, fmoving);
        stage.removeEventListener(Event.ENTER_FRAME, overmoving);
        stage.removeEventListener(Event.ENTER_FRAME, stapfon);
        stage.removeEventListener(Event.ENTER_FRAME, stapfon1);
        stage.removeEventListener(Event.ENTER_FRAME, stapgr);
        stage.removeEventListener(Event.ENTER_FRAME, stapgr1);
        stage.removeEventListener(Event.ENTER_FRAME, charstop);
        stage.removeEventListener(Event.ENTER_FRAME, stapforest);
        stage.removeEventListener(Event.ENTER_FRAME, oblaka_1);
        stage.removeEventListener(Event.ENTER_FRAME, oblaka);
        stage.removeEventListener(Event.ENTER_FRAME, letobl_1);
        stage.removeEventListener(Event.ENTER_FRAME, letobl);
        stage.removeEventListener(Event.ENTER_FRAME, piles);
        stage.removeEventListener(Event.ENTER_FRAME, piles1);
        stage.removeEventListener(Event.ENTER_FRAME, musoff);
 
}

Вообще убило))
Слушатель ENTER_FRAME должен быть один на все приложение, максимум 2 в определенных условиях, и то не желательно. А здесь их целая гора. Телефон просто умрет на таком приложении)

Arman Turalin 14.09.2015 09:28

Спасибо большое )
Буду исправлять...
А я то думал, почему у меня игрушка на телефоне так лагает)
Сейчас попробую сделать один слушатель..

Добавлено через 1 час 11 минут
Цитата:

Что это вообще? Текстовые данные так не сравниваются
а как мне их сравнить?

я исправил вот это

Код AS3:

best_text.text = "0";

все равно ошибку выдает..(

Код AS3:

shet.text>best_text.text

вот это я записал так
Код AS3:

shet.text = String(myscore);

Код AS3:

if (String(myscore)>mySO.data.best_e) {
                shet.text = mySO.data.best_e;
                mySO.flush ();
        }

все равно такая же ошибка

caseyryan 14.09.2015 11:11

Цитата:

вот это я записал так
Я еще раз говорю, строки так не сравниваются. Так можно сравнивать только числа.
Сначала строчные представления чисел надо перевести в числа, а потом уже сравнивать

Код AS3:

if (myscore > parseFloat(mySO.data.best_e)) {
    //
}

А лучше вообще хранить все эти данные в числовых переменных

Arman Turalin 15.09.2015 01:00

Блин, я походу рукожоп))
все равно ничего не выходит


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

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