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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.11.2012, 18:00
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 11  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Код AS3:
var array:Array = []
и
array = new Array();
Не одинаковые.

Код AS3:
var array:Array = []
и
var array:Array = new Array();
Одинаковые

Различия между [] и new Array() в скорости работы и в том, что во втором случае можно сразу задать длину массива.

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

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от Mkey Посмотреть сообщение
Код AS3:
package{
	import flash.display.*;
	import flash.events.*;
	public class Hostile extends MovieClip
	{
		public var Light:int=2;
		public var id:String="t";
		public var speed:int=1;
		public var Checkpoint:Array;
		Checkpoint=new Array();
,
Ругается на два последних куска кода("1120: Access of undefined property Checkpoint."). В чем могут быть проблемы?
так делать нельзя в теле класса, можно объявить переменную в теле класса так:
Код AS3:
package{
	import flash.display.*;
	import flash.events.*;
	public class Hostile extends MovieClip
	{
		public var Light:int=2;
		public var id:String="t";
		public var speed:int=1;
		public var Checkpoint:Array = new Array();

Старый 29.11.2012, 22:31
Frost47rus вне форума Посмотреть профиль Отправить личное сообщение для Frost47rus Найти все сообщения от Frost47rus
  № 13  
Ответить с цитированием
Frost47rus
[+4 08.09.13]

Регистрация: May 2012
Сообщений: 131
в теле класса присваивать значения логично только для static полей.
все приватны/публичные поля - присваиваются или в конструкторе или в методах.
делать это в теле класса - плохо.
посмотрите свои скомпиленные swf - компилятор всё переносит в конструктор, ибо так правильно.
отвыкайте делать неправильные вещи.

Добавлено через 46 секунд
ПС: и да, обозначать Array как new Array() или [] - не имеет разницы.

Старый 29.11.2012, 22:56
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 14  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
делать это в теле класса - плохо.
посмотрите свои скомпиленные swf - компилятор всё переносит в конструктор, ибо так правильно.
отвыкайте делать неправильные вещи.
Кого волнует, что делает компилятор? С чего Вы решили, что это правильно?

Старый 29.11.2012, 23:14
Frost47rus вне форума Посмотреть профиль Отправить личное сообщение для Frost47rus Найти все сообщения от Frost47rus
  № 15  
Ответить с цитированием
Frost47rus
[+4 08.09.13]

Регистрация: May 2012
Сообщений: 131
обычная логика. это объектно-ориентированный язык.
присваивание переменной значения - происходит при создании нового экземпляра класса (читай - в конструкторе или методах).
полей класса не существует без экземпляра.
(статические поля - к классу не относятся)

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Frost47rus, если все делать как компилятор, то зачем он вообще нужен? Давайте сразу писать на ассемблере.
Переменные можно инициализировать вне конструктора. Если компилятору нужно, он сам перенесет куда надо. Я почти всегда инициализирую переменные (если это возможно) вне конструктора, во-первых чтобы не захламлять код конструктора, во-вторых, чтобы делать меньше работы.
Цитата:
ПС: и да, обозначать Array как new Array() или [] - не имеет разницы.
Имеет. Об этом уже писали выше. Разница не существенная, но если нужна максимальная оптимизация, лучше использовать [], а не new Array();
с Object ситуация обратная. Лучше использовать new Object() вместо {}
На эту тему уже было много рассуждений и тестов. В том числе и на этом форуме.

Старый 30.11.2012, 11:13
Frost47rus вне форума Посмотреть профиль Отправить личное сообщение для Frost47rus Найти все сообщения от Frost47rus
  № 17  
Ответить с цитированием
Frost47rus
[+4 08.09.13]

Регистрация: May 2012
Сообщений: 131
я пишу под флеш на хаксе. он такие вещи не пропускает до компиляции.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
ну, это проблема хекса, а не ас3
флексовский компилятор без проблем допустит

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
обычная логика. это объектно-ориентированный язык.
присваивание переменной значения - происходит при создании нового экземпляра класса (читай - в конструкторе или методах).
То что это ООП никак не связано с тем, что компилятор считает валидным.
Тогда, пожалуйста, никогда не пишите вот так:
Код AS3:
addChild(new SomeObject());
eaze(object).to( ... ).onComplete( ... ).start();
Потому что результат будет аккумулироваться в локальных переменных, а уже потом передаваться в метод.
Никогда не используйте двойное присваивание
Код AS3:
a = b = 5
потому что компилятор это разворачивает.

И самое главное, ни в коем случае не используйте комментарии. Компилятор их тоже вырезает.

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

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

Добавлено через 2 минуты
Цитата:
На эту тему уже было много рассуждений и тестов. В том числе и на этом форуме.
А версия плеера не влияет на них?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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