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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.08.2011, 01:30
Sergespb вне форума Посмотреть профиль Отправить личное сообщение для Sergespb Найти все сообщения от Sergespb
  № 1  
Ответить с цитированием
Sergespb
 
Аватар для Sergespb

Регистрация: Jul 2011
Сообщений: 34
Question TypeError: Error #1010: Термин не определен и не имеет свойств.

Здравствуйте дорогие программисты.

У меня вылезает такая вот ошибка при использовании написанного мною класса:
TypeError: Error #1010: Термин не определен и не имеет свойств.

По всей видимости проблема в том, что при обращении к определенному свойству класса оно оказывается не определенным. Но в ошибке не пишется какое именно свойство не определено.

Можно ли каким-либо образом вывести имя этого свойства?

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Может код покажете, наверно не создали какой-нить объект и сразу его стали пробовать. Есть дебаг/трейс для таких вещей.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 18.08.2011, 02:21
Sergespb вне форума Посмотреть профиль Отправить личное сообщение для Sergespb Найти все сообщения от Sergespb
  № 3  
Ответить с цитированием
Sergespb
 
Аватар для Sergespb

Регистрация: Jul 2011
Сообщений: 34
Полный код ошибки:
Код:
TypeError: Error #1010: Термин не определен и не имеет свойств.
at com.***.***::TextMetric()
at com.***.***::ResultTextField/selectionInit()
TextMetric():
Код AS3:
function selectionInit (e:Event) {
	Mertic = new TextMetric(resTF, resTF.mouseX, resTF.mouseY);
 
	if (Mertic.sentMetric == true) {
		//записываем номер выделенного предложения в событие
		var assetEvent:TextFieldEvent = new TextFieldEvent(TextFieldEvent.SENT_SELECTED);
		assetEvent.sentNumber = Mertic.selectedSent;
		dispatchEvent(assetEvent);
		//выделяем предложение
		sentenceSelect(Mertic.startSentNum, Mertic.endSentNum);
	} else {
		clearSentSelection();
	}
	if (Mertic.wordMetric == true) {
		wordSelect(Mertic.startWordNum, Mertic.endWordNum);
	} else {
		clearWordSelection();
	}
}
ResultTextField/selectionInit():
Код AS3:
package com.***.*** {
	import flash.text.TextField;
	import com.***.***.WWT;
 
	public class TextMetric {
 
		var wwt:WWT = new WWT();
		var sentCount:int;
 
		var startSentNum:int;
		var endSentNum:int;
 
		var sentMetric:Boolean = new Boolean(false);
		var wordMetric:Boolean = new Boolean(false);
 
		var startWordNum:int;
		var endWordNum:int;
 
		var selectedSent:int;
 
		const DROP_SENTENCE:RegExp = /(\?+ |\!+ |\!\?+ |\?\!+ *|\.+ |\r)/
		const SHORT_WORDS:RegExp = /(Dr\. |dr\. |Mr\. |mr\. |Mrs\. |mrs\. )/
		const DROP_SENT_BY_TAG:RegExp = /(<\/sent\d>)(<sent\d>)/
		const DROP_SENT_BY_TAG_CORRECT:RegExp = /<\/sent\d>/
 
 
		public function TextMetric (obj:TextField, x:Number, y:Number){
 
			var array:Array = wwt.getSentArray(obj.text);
			var position:int = obj.getCharIndexAtPoint(x, y);
			var stSCh:Number = new Number(0);
			var enSCh:Number = new Number(array[0].length);
 
			if (position != -1) {
				position == 0 ? position = 1 : position = position
 
				sentCount = array.length;
 
				position++;
				for (var i = 0; i < sentCount; i++) {
					if ((stSCh < position) && (position < enSCh)) {
						selectedSent = i+1;
						break;
					}
					stSCh += array[i].length;
					enSCh += array[i+1].length;
				}
				position--;
 
 
				while (obj.text.substring(stSCh, stSCh+1) == " ") {
					stSCh++;
				}
 
				startSentNum = stSCh;
				endSentNum = enSCh-1;
 
				sentMetric = true;
 
				if (obj.text.substring(position, position+1) == ".") {
					wordMetric = false;
				} else {
					var expString:String = wwt.symbolsToSpaces(obj.text);
 
					startWordNum = expString.lastIndexOf(" ", position);
 
					startWordNum == -1 ? startWordNum = 0 : startWordNum++
 
					endWordNum = expString.indexOf(" ", position);
 
					endWordNum == -1 ? endWordNum = obj.length : endWordNum = endWordNum
					wordMetric = true;
				}
			} else {
				wordMetric = false;
				sentMetric = false;
			}
		}
	}
}

Старый 18.08.2011, 02:23
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 4  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
объект не успевает "создастся", предлагаю подписаться на событие появления или добавления на stage. либо ловить трейсами, что долго.

Старый 18.08.2011, 02:24
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
resTF существует?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 18.08.2011, 02:29
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
package com.***.*** {
	import flash.text.TextField;
	import com.***.***.WWT;
Крутота ***
__________________
Марк Tween

Старый 18.08.2011, 02:30
Sergespb вне форума Посмотреть профиль Отправить личное сообщение для Sergespb Найти все сообщения от Sergespb
  № 7  
Ответить с цитированием
Sergespb
 
Аватар для Sergespb

Регистрация: Jul 2011
Сообщений: 34
Цитата:
Сообщение от GBee Посмотреть сообщение
resTF существует?
Да. Он создается в конструкторе, так как вокруг этого текстового поля всё и крутится.

Добавлено через 1 минуту
Цитата:
Сообщение от in4core Посмотреть сообщение
Код AS3:
package com.***.*** {
	import flash.text.TextField;
	import com.***.***.WWT;
Крутота ***
Норм там всё. =) Просто дань анонимности.

Добавлено через 6 минут
Цитата:
Сообщение от t4arty Посмотреть сообщение
объект не успевает "создастся", предлагаю подписаться на событие появления или добавления на stage. либо ловить трейсами, что долго.

Он успевает создаваться. Дело в том, что функция selectionInit() вызывается постоянно в ENTER_FRAME. она получает координаты мыши над текстовым полем, а ТеxtMetric должен получить внутри себя определенные значения. Так вот если навести мышь например на точку в конце предложения появляется ошибка о которой говорилось выше.

Но что именно не нравится скрипту не понятно...

По сути, всё работает замечательно (всё как надо), но хочется чтобы не было ошибок.

Старый 18.08.2011, 02:39
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
вы уверены? просто судя по стеку все в TextMetric() происходит. А кроме него я не объявленных объектов не наблюдаю.

разве что array после wwt.getSentArray(obj.text); может быть null

тут
Цитата:
while (obj.text.substring(stSCh, stSCh+1) == " ") {
stSCh++;
}
лопнули глаза


Ставлю на resTF или array
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 18.08.2011, 02:44
Sergespb вне форума Посмотреть профиль Отправить личное сообщение для Sergespb Найти все сообщения от Sergespb
  № 9  
Ответить с цитированием
Sergespb
 
Аватар для Sergespb

Регистрация: Jul 2011
Сообщений: 34
Цитата:
Сообщение от GBee Посмотреть сообщение
лопнули глаза
бывает )) (кстати очень удобная конструкция)

resTF определяется задолго до всего этого и текст в нем изначально присутствует заносится в момент определения.
array так же определяется потому как является результатом дробления текста из resTF на предложения.

Я прекрасно понимаю как скрипт работает и ошибку в итоге найду... По большему счету главное что я хотел узнать это то что я и спрашивал в самом начале:

Можно ли каким-либо образом вывести имя так называемого "термина" на который ругается скрипт?

Старый 18.08.2011, 02:55
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 10  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
null
Чтобы получить имя - надо знать у кого его брать, а его не существует. Проще всего отдебажится, уже бы нашли давно.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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