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

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

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

Регистрация: Jun 2008
Сообщений: 126
Спасибо за справку.
Но роль importа до сих пор не ясна.
Он же не помогает разрешить неоднозначность (скорее наоборот так как является обязательным).

Старый 19.07.2009, 21:06
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 22  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Си невсчет — там компилятор вообще не беспокоиться о поиске файлов, тупо компилирует все файлы, которые ему подсунули на вход включая те, что записаны в #include. Во флеш компилятор работает немного по-другому: компиляция начинается с главного класса (document class), а затем идет по импортам, подключая все необходимые классы. В этом есть свои плюсы — подключаются только те классы, что действительно используются. С большой натяжкой можно сказать что import в AS3 это аналог #include в Си++.
__________________
TankiOnline
Я разработчик Alternativa3D

Старый 19.07.2009, 21:10
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 23  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
Яски
Компилятор может подключить необходимые классы и без инструкции import. Я же ему указываю:
Код AS3:
new paket1.Class1();

Старый 19.07.2009, 21:18
kup вне форума Посмотреть профиль Отправить личное сообщение для kup Найти все сообщения от kup
  № 24  
Ответить с цитированием
kup

Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
sospamom, разовью вашу мысль может станет понятнее.

Код AS3:
var myPoint:Point = new Point(10, 10)
не смущает, что здесь мы указваем тип Point через двоеточие? Ведь видно же, что мы создаем экземпляр класса поинт и компилятор мог бы и сам догадаться, что к чему. Зачем вобще var? Раз нет такой переменной, ну так пусть компилятор озаботится и продекларирует ее.

Почему вас именно import обеспокоил, к чему эти полумеры?

Старый 19.07.2009, 21:29
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 25  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
kup
Неудачный пример, компилятор не сможет догадаться переписать
Код AS3:
var myPoint = new Point(10, 10)
как
Код AS3:
var myPoint:Point = new Point(10, 10)
ведь мы можем написать и
Код AS3:
var myPoint:Object = new Point(10, 10)

var нужна например в данном случае:
Код AS3:
var b = 5;
a();
function a(){
var b = 7;
}
чтобы компилятор понял, что мы сейчас работаем с переменной в области видимости функции.

Это не полумеры, мы до всех доберемся просто в произвольном порядке

Старый 19.07.2009, 22:19
kup вне форума Посмотреть профиль Отправить личное сообщение для kup Найти все сообщения от kup
  № 26  
Ответить с цитированием
kup

Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
Цитата:
Сообщение от sospamom Посмотреть сообщение
kup
Неудачный пример, компилятор не сможет догадаться переписать
Код AS3:
var myPoint = new Point(10, 10)
как
Код AS3:
var myPoint:Point = new Point(10, 10)
ведь мы можем написать и
Код AS3:
var myPoint:Object = new Point(10, 10)
можно же написать например так.

Код AS3:
var myPoint = new Point(10, 10) as Object

Цитата:
Сообщение от sospamom Посмотреть сообщение
kup

var нужна например в данном случае:
Код AS3:
var b = 5;
a();
function a(){
var b = 7;
}
чтобы компилятор понял, что мы сейчас работаем с переменной в области видимости функции.
для этого есть this чтобы указать зону видимости.

Код AS3:
import MyClass;
 
это такой аналог кода
 
class MyClass
{
    // ...
}
Чтобы незахламлять исходники. Просто чтобы использовать класс, вы должны его продекларировать. Компилятор ничего незнает про файлы и ваши полные-пути ему лесом. То что вы хотите, должно иметь примерно такой синтаксис.

Код AS3:
new class {  };


Последний раз редактировалось kup; 19.07.2009 в 23:04.
Старый 19.07.2009, 22:51
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 27  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от sospamom Посмотреть сообщение
Яски
Компилятор может подключить необходимые классы и без инструкции import. Я же ему указываю:
Код AS3:
new paket1.Class1();
Нет, в такой формулировке - не может, это нужна нечеловеческая логистика чтобы догадаться:
- что paket1 это не локальная переменная, которую забыли объявить.
- что это не поле класса (унаследованое откуда-нибудь)
- что это не неймспейс объявленый где-нибудь рядом в коде.
- а что это файл где-то то ли на глобальных, то ли на пользовательских путях, а может быть это адрес в SWC, а может это адрес в SWZ...

Понимаете, если бы компилятор искал каждую необъявленную переменныю в файловой системе, вы бы результаты компиляции ждали бы минутами даже в маленьких проектах... вот поэтому импорт и нужен - чтобы явно указать, что используется пакет с таким именем.

Код AS3:
var packet1:Object = {};
packet1.Class1 = MovieClip;
var mc:MovieClip = new packet1.Class1() as MovieClip;
Для большей наглядности.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 19.07.2009 в 22:53.
Старый 19.07.2009, 23:06
ldimat вне форума Посмотреть профиль Отправить личное сообщение для ldimat Найти все сообщения от ldimat
  № 28  
Ответить с цитированием
ldimat
[+1.3 20.07.09]

Регистрация: Jun 2009
Сообщений: 29
Записей в блоге: 1
не ждал бы никто ничего минутами, можно было бы адресовать пути по которым ищутся исходники, и один раз запомнить все расположения. под флексом этим бы занялся fcsh, под flash ide - она сама.

проблемма не втом, если
import A.B;
new B();
компилится и просто
new B();
компилится, тогда зачем импорт??

поповоду таких косяков как то что мы можем объявить локальную переменную с именем как у некоторого класса - то и пути не нужны чтоб вызвать проблеммы. мне например больше нравится что переменную можно объявить в одном цикле и использовать в другом. но не отвлекаемся вспоминаем про импорт

Старый 20.07.2009, 00:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 29  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну ОК... может third time the miracle... еще раз, import это точно такое же указание, как и var - импорт говорит о том, что вы используете пакет, а не свойство - посмотрите еще раз на код выше, вы понимаете, что если в нем используется точно такая же констукция, как та, что вы предложили раньше, и при этом ничего не импортируется?
кроме того, кеширование - процесс занимающий много времени, а ваше предложение "кешировать все подряд" - только ради того, чтобы не писать импорты... смотрите... сорцы АС компилятора открыты, спортивного интереса ради возьмите да и перепишите эту часть, я не думаю, что это прям так уж сложно - ну и посмотрите, сколько времени у вас займет компиляция с импортами и без...
__________________
Hell is the possibility of sanity

Старый 20.07.2009, 01:04
ldimat вне форума Посмотреть профиль Отправить личное сообщение для ldimat Найти все сообщения от ldimat
  № 30  
Ответить с цитированием
ldimat
[+1.3 20.07.09]

Регистрация: Jun 2009
Сообщений: 29
Записей в блоге: 1
Код AS3:
Package {
        import flash.display.Sprite;
 
        public class T extends Sprite {
                function T() {
                        var Sprite:Sprite = new Sprite;
                }
        }
}
^^^^ такой код тоже чудесно компилится и ни у кого не возникает вопрос что я дальше буду использовать в катчестве Sprite, мне там поможет только new flash.display.Sprite(), и если я еще сделаю объект flash со свойством display у котого будет свойство Sprite, то до конструктора спрайта я вообще не представляю как можно достучатся

поэтому опять вопрос: зачем нужна импорт если она ничего не делает?
З.Ы. кеширование даже 1000 файлов ты особо не заметишь


Последний раз редактировалось iNils; 20.07.2009 в 14:07.
Создать новую тему Ответ Часовой пояс GMT +4, время: 11:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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