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

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

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

Регистрация: Dec 2013
Сообщений: 35
По умолчанию Использование функций для создания объектов.

Есть всем известная книга Колина Мука глава 15 страница 339-400 где описан способ который я часто использовал в AS2 но у меня он не работает в AS3. Я что-то не понимаю?

Код AS3:
function Employee(age){
 
 this.age=age;
}
 
var worker=new Employee(17);

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
this обращается к текущему экземпляру, а не к функции.
Такой синтаксис нетипичен для объектно-ориентированного языка.

Код AS3:
trace(this.parent);
trace(this);
Этот код везде будет работать одинаково.
Можно сделать так

Код AS3:
var obj:Object = new Object();
obj.age = 17;
или так

Код AS3:
var obj:Object = new Object();
obj["age"] = 17;
или так

Код AS3:
var obj:Object = { age:17 };
Но в AS3 объекты не используются, как объекты, а как нетипизированные ассоциативные массивы.
Объекты в AS3 - это экземпляры классов.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Dec 2013
Сообщений: 35
Да это я знаю. Не работает именно сам способ:

Код AS3:
function Employee(){
 
}
 
var worker=new Employee();
Флеш пишет -> 1048: Метод не может использоваться как конструктор.

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
function определяет объект класса Function, экземпляр уже определённой функции нельзя создать.
Можно создать экземпляр функции вот так, но это не имеет ничего общего с вашими потребностями.
Код AS3:
var func:Function = new Function("...");
В чём логика?
Вы объявляете функцию, и пытаетесь создать объект с помощью функции.
Естесственно, эту ерунду убрали, и дали более удобную работу с объектами в виде классов.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 14.07.2015 в 09:36.
Старый 14.07.2015, 09:29
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 5  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Код AS3:
package
{
    import flash.display.Sprite;
    import flash.events.Event;
 
    public class Main extends Sprite
    {
        public function Main()
        {
            var worker:Object = new Employee(17);
            trace(worker.age);
        }
    }
}
 
// Функция должна быть размещена за пределами package.
// У Мука про это написано в самом начале.
function Employee(age:Object):Object
{
    this.age = age;
    return this;
}

Старый 14.07.2015, 09:53
hebep1982 вне форума Посмотреть профиль Отправить личное сообщение для hebep1982 Найти все сообщения от hebep1982
  № 6  
Ответить с цитированием
hebep1982

Регистрация: Dec 2013
Сообщений: 35
Спасибо callme. Теперь ясно в каком контексте это имелось ввиду.

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

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

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


 


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


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