пятница, сентября 28, 2007

Имитатция trace во Adobe Flex

Последнее время появилось несколько полезных утилит, позволяющих потрейсить ваши приложения не прибегая к debug-режиму компиляции. Например, один от Алексея Аникутина и другой от ShaggySmile.
Первый тип неудобен для меня, так как он сделан для Mozilla Firefox, а я привык запускать приложения в осле. А второй подразумевает сперва запуск флешки-приемщика сообщений. И еще - мне не нужны всякие навороты типа табличных данных - мне просто нужен вывод текстовых сообщений, ну там массив протрейсить или строчку какую-нибудь вывести. Без обид, ребят:)

Поэтому, я для себя сделал маленький наворот для html-темплейта приложения. Открываем темплейт, добавляем следующий код сразу после body:

<!--logger-->
<input type="button" onclick="toogleVis()" value="show/hide"/>
<input type="button" onclick="clearLog()" value="clear"/>
<div id="log" style="display:block;">
<script language="JavaScript" type="text/javascript">

function setLog(val)
{
var objDiv = document.getElementById("txt_log");
objDiv.scrollTop = objDiv.scrollHeight;
objDiv.value +=val + "\n";
}

function toogleVis()
{
var objDiv = document.getElementById("log");
objDiv.style.display=(objDiv.style.display=="block")?"none":"block";

}

function clearLog()
{
document.getElementById("txt_log").value="";
}

</script>
<textarea style="width:100%; height:150px;" id="txt_log"></textarea>
</div>
<!--logger-->

На body вешаем обработчик onload="clearLog()".

Теперь в нашем флекс-проекте добавим маленькую функцию:

public function strace(val:*):void
{
var str:String = val.toString();
ExternalInterface.call("setLog", str);
}

Теперь после компиляции проекта и открытии его в браузере, наверху появляется текстовое поле, в которое можно выводить свои трейсы:

strace("Hello world :)");

четверг, сентября 27, 2007

Вышла версия 3D движка Sandy для AS3

Основными особенностями движка являются:
  • совместимость от 7 до 9 версий плеера
  • несколько 3D примитивов, позволяющих быстро создавать необходимые объекты без особых трехмерных знаний.
  • улучшенное и простое управление объектами, позволяющее без труда их масштабировать, вращать, двигать и т.п.
  • улучшенное управление камерой.
  • загрузка сложных объектов (.ASE, Collada, 3DS)
  • система материалов для управления внешним видом моделей
  • использование Flash-фильтров для создания приятных эффектов

Сайт проекта. Вот демки, отсюда можно скачать.

среда, сентября 26, 2007

Тонкости addFrameScript

Существует недокументированная функция addFrameScript, которая может быть иногда полезна. Она позволяет задать функцию, которая будет вызываться при прохождении мувиклипом соответствующего кадра. Эта функция является отличной альтернативой коду в кадрах.

Вот ее синтаксис:
MovieClip.addFrameScript(frame_number:uint,function_to_call:Function)

Пример:

function myFunction()
{
trace('10th frame')
}

addFrameScript(9, myFunction); // кадры нумеруются с 0


Осталось только научится передавать параметры в эту функцию. Тут нам поможет класс Delegate от Ian Thomas.

package
{

public class Delegate
{
public static function create(handler:Function,...args):Function
{
return function(...innerArgs):void
{
handler.apply(this,innerArgs.concat(args));
}
}
}
}


Теперь мы можем вызывать нашу функцию с параметрами:

package {

import flash.display.*;

public class main extends Sprite {


public function main() {
for (var i:int=0; i<10; i++) {
var mc:MovieClip = new Quad() as MovieClip;
addChild(mc);
mc.addFrameScript(mc.totalFrames-1,Delegate.create(myFunction,i));
}
}

private function myFunction(i:int):void {
trace(i);
}
}
}


Оригинал

Кстати, Денис Коляко недавно ниписал класс ClipFactory.

Класс ClipFactory позволит вам создавать обычный мувиклип с указанным количеством пустых кадров, который вы в последствии сможете использовать в качестве анимационного клипа, выполняя действия в каждом кадре (навесив обработчики через метод addFrameScript).

четверг, сентября 20, 2007

HTML во Flex - теперь еще проще!

Alistair Rutherford расширил созданный когда-то Кристофом Коэнратсом компонент для отображения HTML во Flex через IFrame. Использовать его достаточно просто, поддерживаеся несколько HTML окон, видимость контролируется автоматически. В общем - исходники, пример, почитать.

FunFX - фреймворк на Ruby для тестирования Flex приложений

Во время разработки большого приложения желательно быстро находить и исправлять возникающие ошибки. Здесь нам поможет Flex automation framework. Он делает возможным эмулировать действия пользователя во Flex интерфейсе. То есть вы можете написать скрипт, который будет выполнять серию действий (нажатие кнопки, заполнение формы и т.п.) и запустить его. Неплохо, не правда ли? Но загвоздка в том, что до настоящего времени существовало только одно решение для работы с Flex automation framework и оно достаточно дорогое. Но к счастью, теперь есть альтернатива.

FunFX - это бесплатный, опенсорсный фреймворк, разрабатываемый Peter Motzfeldt и позволяющий использовать Flex automation framework с помощью Ruby-скриптов. Сейчас он на ранней стадии разработки, но как видно из видеоурока, он уже много чего умеет. Загрузить можно отсюда.

Оригинал

вторник, сентября 11, 2007

Новый микросайт Audi

В рассылке увидел анонс нового сайта Audi A4, выполненного с помощью Papervision3D.

А вы еще удивляетесь, почему так быстро Джону Грдену на макбук собрали.

Как добраться до мувиклипов вашей 9 флешки из флекс-приложения

Допустим, есть какая-нибудь флешка, скомпилированная под 9 и AS3. Чтобы добраться до объектов ее сцены (например, мувиклипов) необходимо сперва сделать функции-геттеры в этой флешке, которые можно разместить прямо в кадре:

function getMC():MovieClip
{
    return mc; // mc - instance name
}


Далее, по идее, мы загружаем это творение через SWFLoader (например, swf_loader) и на событии complete вешаем обработчик со следующим кодом:

var swf_stage:MovieClip = MovieClip(swf_loader.content);
var mc:MovieClip= MovieClip(swf_stage.getMC());


Теперь мы можем использовать этот мувиклип нужным образом.

понедельник, сентября 03, 2007

Блог об интеграции Papervision3D и Flex

На днях в рассылке был проанонсирован новый блог, целью которого автор ставит:
- позволить флекс-программистам использовать MXML для построения сцен.
- использовать стиль программирования флекс-эффектов для создания анимации.
- добавлять 3d события для управления inline ActionScript кодом.
- создать DisplayObject3D-обертку для внедрения 2D flex UI компонентов в 3D сцену.
- обеспечить встроенные режимы 3d навигации?!
Есть примерчик с кодом.
В общем, начало интересное. Буду следить.