19 мая - Adobe CS6 Launch Party в Киеве. Регистрируемся!  
FlexiPedia Wiki on Adobe Flex
Флэш Потрошитель - Жизнь вокруг технологииЖизнь вокруг технологии

Флэш Потрошитель этот | тот | 1.0

С 09.09.2002
  • Коллекция багов Flash
  • Ссылки для начинающего аниматора
  • Flex для PHP-разработчиков
  • Как вы используете Flash?

Поток сознания

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

давно уже конечно было ясно, но теперь с выходом новой версии флеша html5 выглядит как дополнительная функция к cs5.6))

6 дней назад

Флэшер-аноним replied on Новые, лучшие редакторы кода:

...если речь о front end. Для back end'а единственно верный выбор - текстовый редактор Midnight Commander'а :) Вообще просто хотел высказать (наверно, банальную) мысль о том, что идеальная IDE должна строиться именно на "максимально быстром" текстовом редакторе. Путь визуализации - хорошая идея, но опасная. На данный момент "визуальность" должна возникать в мозге программиста - и не понимаю, почему все так стараются перенести нагрузку с этого самого ("несчастного"?!) мозга на что-то иное :) - с помощью визуализации, прививания жёстких принципов ООП, шаблонов проектирования и т.д. Необходимо что-то более радикальное, что не будет строить железные заборы на пути свободной мысли... :)

1 неделя назад

Флэшер-аноним replied on Adobe вместе с Грантом Скиннером разрабатывает экспорт флэш-проектов из Flash CS6 в Canvas:

[URL=http://i.cx/29z7][IMG]http://i069.radikal.ru/1202/03/9f40d01e407f.png[/IMG][/URL] [b]скачать программу рыбалка 1.6 [/b] [b]скачать проигрыватели для компьютера с картинками [/b] [b]окна приветствия для windows xp скачать [/b] [b]скачать miranda русская версия [/b] [b]скачать original soundtrack driver parallel lines [/b] bb.txt open error база велкома скачать 2009 скачать пакет обновления для среды скачать бесплатную игру кто хочет стать миллионером для пк виста хом премиум скачать скачать поезд train 2008/1400 mb скачать драйвера для аудио реалтек section 8 скачать лицензионную скачать wwe legends patch скачать utorrent 1.6.1 rus visual basic 6.0 скачать скачать антихакер касперского скачать catalyst 6.2 win98 евгений немец скачать kassy 071 скачать скачать программу антропометрии http://beta.purifying.info/viewtopic.php?f=2&t=326117 http://dragonphoenix.brinkster.net/phpbb/phpbb3/viewtopic.php?f=1&t=480248 http://www.erotikapromuze.cz/viewtopic.php?f=4&t=131850 http://programaradar.com.br/forum/viewtopic.php?f=2&t=1062486 http://yfb.messageboard.nl/forum/viewtopic.php?f=1&t=59502

1 неделя назад

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

Скачал. Посмотрел. CreateJS - фуфел, шейп твин не поддерживает, маски не поддерживает, эффекты не поддерживает и тд. В общем можно только двигать туда сюда, ну и вложенную анимацию поддерживает. К паблишу для air/android добавили пару галочек - молодцы. В общем изменений максимум на adobe flash cs5.6.

2 недели назад

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

Вот именно сегодня очень захотелось пощупать функцию экспорта в CreateJS, а именно сегодня беты уже нет, скачать еще нельзя...

2 недели назад

Флэшер-аноним replied on Вчера вышел Flash CS6, и это -- наш повод снова встретиться!:

По правду говоря, создается впечатление, что Adobe в последнее время или зарплату подняли или кнуты менеджерам выделили. Последние версии продуктов выглядят так, будто над ними действительно работали. Обновили не только внутренности и алгоритмы, но и над внешним видом неплохо постарались.

3 недели назад

Флэшер-аноним replied on Новые, лучшие редакторы кода:

Хм, я в этом начинающий, буду знать каким редактором лучше верстать, спасибо!

3 недели назад

bimawa replied on Новые, лучшие редакторы кода:

+1 sublim`у достойная замена GVIM. Как текстовый редактор с большим комьюнити и встренным python интерпертатором, и полностью податлев на костоматизации. нет смысла сравнивать IDE с текстовым редактором. Очень удобно писать erlang программы. Есть плагин для Юнитестов.

3 недели назад

Rost replied on Новые, лучшие редакторы кода:

Кол-во строк в файле с кодом - важный параметр. Есть мнение, что оно не должно быть слишком большим. Для удобства навигации по нему.

Легковесные редакторы хороши еще и тем, что в них бытрее появляются инновации. Например, обрати внимание на мини-текст в правом верхнем углу скриншота для Sublime - по нему можно скроллить мышкой, мгновенно перемещаясь в нужное место кода.

Textastic как раз использует тачевые возможности - для этого у него есть клавиши-компасы (есть на скриншоте). Такая клавиша-компас имеет пять значений. Если просто нажать ее - сработает значение по умолчанию (символ посередине). Остальные четыре символа можно выбрать, если нажать и протянуть пальцем в сторону одного из них.

Визуальное программирование -- это очень интересная, но небанальная тема.

Ведь текст имеет иную структуру, чем изображение.

Текст - условно одномерный, линейный. Изображение - фиксированно двумерное (или фиксированно трехмерное).

Кажущаяся одномерность текста обманчива, особенно когда текст становится кодом. За счет функций (замыканий) и условных переходов текст программы становится многомерным. Даже вне программирования существуют многомерные тексты - хорошая книга может содержать внутренние указатели и ссылки на части самой себя. Поэтому текст - очень продвинутый способ работы с сознанием читателя (или компилятором).

Не вижу возможнлости проделать то же самое с изображением. У него другая природа, и визуальное программирование будет похоже на обычное так же, как графика или живопись похожа на литературу.

До сих пор попытки визуального программирования не заходили дальше имитации обычного - надергали компонентов, но потом - все равно пишем код.

Визаульное программирование - это не способ создавать код мышкой (или тачами), а способ программировать другие каналы восприятия - не аналитические (компилируемые), а эмоциональные.

Кстати, ближе всего к этому подошел флэш. Но потом его убили бизнесом, а из трупа сделали геймдев :)

Так визуальное программирование остается мечтой масс и уделом гениев-одиночек.

3 недели назад

Dan replied on Новые, лучшие редакторы кода:

Брррр... Легковесные редакторы кода хороши только для легковесных (~20 строк кода) программ. Для всего остального - Idea и FDT.

А редакторы для мобильных устройств зачем-то делают такими же, как на десктопах (у которых есть нормальная клавиатура), при этом совершенно не используя возможности тач-скринов. Думаю, через годик-два появятся наконец мобильные редакторы, где можно будет писать программу чисто жестами, без "волшебных" кнопок.

 

3 недели назад

Более старые 
Главная › Блоги › Блог Rost

А как Вы перебираете элементы массива?

ВНЕЗАПНО обнаружил, что для обработки массивов в AS3 пользуюсь давно уже устаревшим методом, перебирая значения в цикле for. Но уже не первый год существует множество новых методов для обработки массивов в AS3. Например, нужно спрятать мувиклипы спрайты, занесенные в массив. Метод Array.foreach для этого и задуман:

sprites.foreach(function(sprite:*, index:int, array:Array):void{sprite.visible=false});

Как это делается по старинке в цикле вы хорошо знаете:

for(var i:int=0;i<sprites.length;i++){sprites[i].visible=false});

Я думаю, что проблема здесь не только в моем длинном тормозном пути, но и в документации, которая несколько суховата, а методы полезные. Кстати, по первой ссылке - образцовый туториал по всем этим методам.

Интересно, сктолько опечаток я сделал в этот раз Smile

  • actionscript
  • array
  • Подсказки
- Rost, пт, 23/01/2009 - 22:18
  • Блог пользователя Rost

Комментарии

Новые методы симпатичные, но не люблю я как-то inline-функции, а будучи отдельно обьявленными, они, из-за специфического набора аргументов, не очень пригодны для повторного использования:( Тем более только одно свойство редко циклом ставится, а длинный код будет в таком виде плохо читаться.

DL1t (не проверено) 22:27 23/01/09

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

а спрайты прятать так грамотнее помоему ивент послать а спрайты пусть слушают

Flop http://bafpug.com 22:47 23/01/09

Насколько я понимаю, они нужны только в двух случаях:
1. Если действие над элементами массива может динамически меняться во время выполнения. Можно брать нужную функцию (из заданного набора) и подставлять именно ту, которая нам нужна.
Можно ещё енто как-то соединить с полиморфизмом и получить вообще интересные штуки, только прямо сейчас пример придумать дать не могу.

2. Если нужно максимально сократить количество строк, как в одном всем известном конкурсе Smile

Кстати, эти же методы есть и у Vector.
Но!
Мною обнаружена злая бага: метод map у класса Vector всегда возврашает undefined (а должен возвращать новый вектор).
Поэтому не получается делать так:

bitmapData.setVector (rect, bitmapData.getVector(rect).map(blablabla));

При этом метод map у Array работает прекрасно.

Dan 04:31 24/01/09

Помимо того, что кода больше, выглядит он хуже, так ещё и медленнее более чем в 2 раза. Не муд(р)и, Ростик Smile

var sprites:Array = new Array();
for (var i:uint = 0; i < 1000; i++) sprites.push(new Sprite());
var t:int = getTimer();
for (i = 0; i < 1000; i++) {
sprites.forEach(function(sprite:*, index:int, array:Array):void {sprite.visible = false});
}
trace(getTimer() - t); // 607
t = getTimer();
for (i = 0; i < 1000; i++) {
var l:uint = sprites.length;
for(var j:int = 0; j < l; j++) sprites[j].visible = false;
}
trace(getTimer() - t); // 259

Anton Volkov (не проверено) 01:56 24/01/09

Угу. Забыл про это сказать.
Вызовы функции отжирают очень много.

Dan 04:23 24/01/09

Для Vector forEach чуток побыстрее, но всё равно проигрывает больше чем в 1,5 раза.

var sprites:Vector.<Sprite> = new Vector.<Sprite>();
for (var i:uint = 0; i < 1000; i++) sprites.push(new Sprite());
var t:int = getTimer();
for (i = 0; i < 1000; i++) {
sprites.forEach(function(sprite:Sprite, index:int, array:Vector.<Sprite>):void {sprite.visible = false});
}
trace(getTimer() - t); // 437
t = getTimer();
for (i = 0; i < 1000; i++) {
var l:uint = sprites.length;
for(var j:int = 0; j < l; j++) sprites[j].visible = false;
}
trace(getTimer() - t); // 274

Anton Volkov (не проверено) 02:02 24/01/09

если мне не изменяет память метод forEach и так пробегает по всем элементам. зачем ты его ещё в цикл обернул на 1К итераций?

BlooDHounD (не проверено) 03:24 24/01/09

Посмотри внимательнее.
Цикл от 1 до length тоже пробегает по всем элементам.
Но он тоже обернут в цикл на 1к.

Угадай для чего Smile

Dan 04:29 24/01/09

точняк. тупанул Smile

BlooDHounD (не проверено) 15:16 24/01/09

честно честно медлящее. гараздо. все эти навороченные методы медленнее в 2 раза. + к тому же у тебя с типизацией сё-таки беда Smile

BlooDHounD (не проверено) 03:21 24/01/09

2Rost > предпочитаю олд скул for (var i:uint = 0; i < length; i++)

понятно, красиво, удобно читать и мне и людям

Jloa (не проверено) 03:56 24/01/09

2 Jloa > Кроме того объективно быстрее!
for each использую редко. Даже при создании ассоциированого массива, лучше использовать массив имен и доступ к именам по индексам. Получается массив с двойным доступом к ячейкам - и по индексам (если нужно все перебрать) и по имени (если нужен конкретный элемент).

born (не проверено) 23:18 24/01/09

Процесс вызова функции и возвращения из нее - затратное дело.

Поэтому c = a > b ? a : b быстрее с = Math.max(a, b).

Slon_vsapogah (не проверено) 04:19 24/01/09

хм. а почему бы не писать в таком случае

for each (var sprite in sprites)
sprite.visible = false;

а тут колбек еще какой-то с нетипизированным полем...

yelbota http://yelbota.ru 11:39 24/01/09

Ай ай ай. sprite:Sprite конечно же Smile Haxe ударяет в голову.

yelbota http://yelbota.ru 12:00 24/01/09

Ага, это еще быстрее. У меня вышли такие результаты:
sprites.forEach - 603
for - 279
for each - 124

Rosvald (не проверено) 14:24 24/01/09

Давно знаю, что последний метод самый быстрый - статьи по оптимизации были когда-то зачитаны до дыр. Пользую только for in.

Учкудог (не проверено) 22:35 24/01/09

Самое смешное, что знаешь о существовании всех этих методов, но в работе, в голову приходит только стандартный for, и пишешь свои "дубликаты" этих методов... Хоть распечатывай и на стену вешай. (кстати, идея).

Racer (не проверено) 15:13 24/01/09

Ага, я после перехода на AS3 частенько писал замену indexOf Smile

etc (не проверено) 13:57 25/01/09

for each (var item:SuperPuper in array)
рулить Smile.

nouba (не проверено) 18:15 24/01/09

Не всегда.
Иногда таки хочется знать ещё и индекс.

Dan 23:07 24/01/09

Иногда да, но в большинстве случаев Smile - нет.

nouba (не проверено) 23:09 24/01/09

Для индекса можно ввести дополнительный ключ:
var key:int=0;
for each (var item:SuperPuper in array)
{
key++;
}

По утверждению Колина Мука, for each самый быстрый из всех методов (по вышеприведённым тестам это видно). И он (Мук) рекомендует не юзать обычный for

ya (не проверено) 22:04 26/01/09

и кто вам сказал что key тут будет ключём?

BlooDHounD (не проверено) 23:55 27/01/09

кложуры в AS3 тяжеловато выглядят, поэтому не использую,
а сам функциональный подход люблю....

пример кк гармонично смотрится в груви и как криво в AS3 -


// as3
array.each(function(e:Object):void{
trace(e);
});

// groovy
array.each{e ->
println e
};

Евгений Потапенко (не проверено) 19:49 24/01/09

Ещё один повод переделать компилятор Smile

Dan 01:59 25/01/09

// groovy (minimalistic)
array.each{ println it }

gangsta (не проверено) 02:58 25/01/09

дабы не нарушать закон деметера:

var it:ArrayIterator = new ArrayIterator(somearray);
while(it.hasNext())
{
trace(it.next);
}

а бороться за миллисекунды будем тогда, когда это действительно понадобится.

begemoth (не проверено) 06:40 26/01/09

... но будет уже поздно Smile

Dan 11:16 26/01/09

ну мне лично кажется что фор ич внутри работает как то так - судя по результатам:


var sprites:Array = new Array();
for (var i:uint = 0; i < 1000; i++) sprites.push(new Sprite());


function test(sprite:*, index:int, array:Array):void {
sprite.visible = false;
}


var t:int = getTimer();
for (i = 0; i < 1000; i++) {
sprites.forEach(test);
}
trace(getTimer() - t); //672


t = getTimer();
for (i = 0; i < 1000; i++) {
var l:uint = sprites.length;
for (var j:int = 0; j < l; j++) {
var a:* = sprites[j];
var b:int = j;
var c:Array = sprites as Array;
test(a,b,c);
}
}
trace(getTimer() - t); //674

а изначально в посте они как то в неравные условия поставлены были =)

artfabrique (не проверено) 12:00 26/01/09
  • 1
  • 2
  • следующая ›
  • последняя »
Примечания: Статус документа => в процессе ·
Статьи · Идеальный клип · Персоналии · Глоссарий (уст.) · Что делать? · К началу ↑
© 2002-2012 Ростиславр · О проекте · Подписка на RSS · α-тестировани невероятного
Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Регистрация
  • Забыли пароль?
]]>
]]>

Навигация

  • Контакт