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

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

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

Регистрация: Jun 2005
Сообщений: 147
По умолчанию Конфликт имен

Есть некий класс, который называется Math. Внутри этого класса используется Top Level класс флеш плеера Math.
Код:
package toppack
{
	public final class Math
	{
		static public function met(a:int):int{
			var b:int = Math.floor(a/2); //здесь компилятор думает, что Math - это toppack.Math
			return b;
		}
			
	}
}
А вот главный класс проекта:
Код:
package {
	import flash.display.Sprite;
	import toppack.Math;

	public class Test_names extends Sprite
	{
		public function Test_names()
		{
			trace(Math.met(19));
		}
	}
}
При компиляции выдаются ошибки:
Can not resolve a multiname reference unambiguously. Math (from E:\Programming\Flex Builder 2\Flex SDK 2\frameworks\libs\playerglobal.swc(Math)) and toppack:Math (from D:\_My Projects\FLASH\Flex Builder workspace\Testing\Test_names\toppack\Math.as) are available.

1120: Access of undefined property Math

1061: Call to a possibly undefined method floor through a reference with static type Class.

Я даже понимаю откуда эти ошибки: компилятор считает что Math является класом toppack.Math (когда мне нужно использовать встроенный Math).
Как избавится от этих ошибок без переименовывания своего класса toppack.Math?
Flex проект:
Вложения
Тип файла: rar Test_names.rar (21.6 Кб, 55 просмотров)


Последний раз редактировалось riden; 12.09.2007 в 01:49.
Старый 11.09.2007, 21:02
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 2  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
нельзя использовать названия топ-левел классов при создании своих.

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

Регистрация: Jun 2005
Сообщений: 147
Прискорбно. Спасибо за ответ.

P.S.: Хотя непонятно почему. Ведь Math и toppack.Math - разные классы. Но компилятор тупо думает, что Math == toppack.Math. Далее, следовательно он ненаходит нужные методы. И выдает ошибку, что мол не может понять какой класс вы имеете ввиду (Math или toppack.Math).
P.S.2: Если написать так - trace(toppack.Math.met(19)), то первая и вторая ошибки исчезают, но остается ошибка в том месте где я прокоментировал в коде. Нельзя никак указать компилятору, что Math - это Math, а не toppack.Math?


Последний раз редактировалось riden; 12.09.2007 в 01:48.
Старый 12.09.2007, 02:47
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нельзя, потому что Math лежит в глобальном пакете и текущий класс перекрывает его.

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

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

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


 


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


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