Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.09.2015, 23:26
Arman Turalin вне форума Посмотреть профиль Отправить личное сообщение для Arman Turalin Найти все сообщения от Arman Turalin
  № 1  
Ответить с цитированием
Arman Turalin

Регистрация: Sep 2015
Сообщений: 7
По умолчанию 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);
 
}
может в нем проблемы?
Подскажите пожалуйста... Уже долгое время маюсь над тем, чтобы сохранить достигнутый счет при игре...

Старый 14.09.2015, 06:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Пишу первый раз игру для андроид
С таким уровнем знаний языка в целом, рановато писать для андроида.

Текст - это 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 в определенных условиях, и то не желательно. А здесь их целая гора. Телефон просто умрет на таком приложении)

Старый 14.09.2015, 09:28
Arman Turalin вне форума Посмотреть профиль Отправить личное сообщение для Arman Turalin Найти все сообщения от Arman Turalin
  № 3  
Ответить с цитированием
Arman Turalin

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

Добавлено через 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 ();
	}
все равно такая же ошибка


Последний раз редактировалось Arman Turalin; 14.09.2015 в 10:40.
Старый 14.09.2015, 11:11
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
вот это я записал так
Я еще раз говорю, строки так не сравниваются. Так можно сравнивать только числа.
Сначала строчные представления чисел надо перевести в числа, а потом уже сравнивать

Код AS3:
if (myscore > parseFloat(mySO.data.best_e)) {
     //
}
А лучше вообще хранить все эти данные в числовых переменных

Старый 15.09.2015, 01:00
Arman Turalin вне форума Посмотреть профиль Отправить личное сообщение для Arman Turalin Найти все сообщения от Arman Turalin
  № 5  
Ответить с цитированием
Arman Turalin

Регистрация: Sep 2015
Сообщений: 7
Блин, я походу рукожоп))
все равно ничего не выходит

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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