Архів для ноябрь, 2007

Освобождаем первый кадр. ActionScript 3.0

пятница, ноябрь 30, 2007

В ActionScript 2.0 чтобы очистить первый кадр от классов и символов нам было достаточно в Publish settings указать в какой кадр экспортировать классы, и в символах в библиотеке поставить галочку “Не экспортировать в первый кадр”. И тогда, даже если мы положим на первый кадр компонент, то он останеться без кода и не будет работать.

В ActionScript 3.0 это немного не так, потому что в нём есть возможность задать класс для главной флэшки. И этот класс обязательно должен быть экспортирован в первый кадр. Остальные классы экспортируются в тот кадр, который мы указали, если нет ссылок в главном классе или в коде на кадрах главной флэшки. Нам остаётся не перегружать главный класс или делать флэш-загрузчик, который будет грузить главную, что бы пользователи таки увидели индикатор загрузки.

new MovieClip() це вам не attachMovie(), і це добре :)

четверг, ноябрь 29, 2007

Якщо в бібліотеці однієї флешки (child) ми маємо мувікліп, що експортується для ActionScript (linkagedSymbol), і ми завантажуємо її в іншу (mother), то в ActionScript2.0, за допомогою attachMovie(), ми можемо створити примірник linkagedSymbol’у тільки всередені флешки child. А в ActionScript3.0, використовуючи оператор new ми вже можемо створювати примірники де завгодно. Тобто зараз є можливість створювати бібліотеки символів у вигляді swf, багато разово їх використовуючи.

Загадка про addProperty()

вторник, ноябрь 27, 2007

Загадка від Олександра Мостового (він же Ushan).

// ActionScript 1.0
flea = {};
flea.setter = function():Void{};
flea.getter = function() {
	this.i = isNaN(this.i) ? 0 : this.i+1;
	return this.property;
};
flea.addProperty("property", flea.getter, flea.setter);
flea.property;
trace("i: "+flea.i);

Яке значення flea.i буде в output?

Далі відповідь

(more…)

Загадка про String.replace()

понедельник, ноябрь 26, 2007

Загадка від Олега (він же a_[w]):

var str:String = "vvv.blog.pirrest.com";
trace(str.replace("v", "w"));

Як Ви вважаєте що буде в output?

Далі відповідь

(more…)

Прискорення getDefinitionByName(getQualifiedClassName(obj))

понедельник, ноябрь 26, 2007

Якщо Ви використовуєте цей вираз:
getDefinitionByName(getQualifiedClassName(obj));

то, для прискорення виконання коду використовуйте слідуючу функцію:

import flash.utils.Proxy;
import flash.utils.getQualifiedClassName;
import flash.utils.getDefinitionByName;
import flash.system.ApplicationDomain;
function getClassDefinition(any:*):Class
{
	var cls:Object = null;
	if(any is Proxy){
		cls = getDefinitionByName(getQualifiedClassName(any));
	} else if(any is String && ApplicationDomain.currentDomain.hasDefinition(any)){
		cls = getDefinitionByName(any);
	} else{
		cls = Object(any).constructor;
	}
	return cls as Class;
}

Приріст швидкості більш ніж в 6 разів ( якщо !(any is Proxy) ).

Дякую Олегові (він же a_[w]) за знайдену швидкісну блоху :)

Далі тест на швидкість

(more…)