Архів для Листопад, 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…)