Понадобилось использовать контейнер для приложения vkontakte (т.к. некоторые матоды работают только из контейнера) и столкнулся с тем что перестал адекватно работать самописный скроллер.
В процессе поиска нашел решение в FAQ Вконтакта и хотя там написано: "При использовании контейнера стандартные компоненты флеша работают некорректно. Как это исправить?" - этот метод подошел и мне, хотя это был не стандартный компонент.
Так что при глюках советую сначала попробовать решение проблемы с flash-компонентами от Святослава Лисина:
PS
Бонус - опытным путем, после некоторого количества поиска решения было выяснено, что продвинутый загрузчик фотографий vkontakte не загружает картинки если одна из сторон меньше 60px (примерно), при этом никаких пояснений не выдается и нигде не описывается.
Realaxy ActionScript Editor будет
впервые представлен публике на конференции
Creative Future в Москве, 23
апреля, по адресу ул. Новый Арбат 24 (кинотеатр Октябрь).
11:45—12:45 «Новое поколение редакторов: Realaxy ActionScript Editor глазами создателей.» Выездной подкаст. Евгений Потапенко, Иван Дембицкий, Зал №8
Тезисы:
Мир меняется или почему дизайнеру будет проще начать программировать Flash проекты самому.
Что такое умный редактор кода.
Интерфейс vs текст - вспоминаем Normal Mode во Flash.
Ранняя диагностика ошибок и чем это грозит тараканам.
Пишем одно, получаем 10.
Уникальные возможности Realaxy ActionScript Editor - пишем же для себя.
Что такое расширение и специализация языка и зачем это нужно.
Примеры, возможности, демонстрации.
Для сильно умных можем затронуть вопросы:
Meta Programming System, Domain Specific Languages, Language Oriented Programming, ReactionScript, фриланс программирование в Черногории.
Также в программе раздача закрытой бета версии редактора.
Те, кто не попадут на конференцию, но хотят получить закрытую бету, разработчики предлагают опубликовать новость в совем средстве массовой информации и прислать ссылку на нее письмом на адрес ivan.dembicki@gmail.com указав тему письма [betatest].
Должно получиться нечто революционное, что может изменить представление и сам процесс разработки -
очень интересное виденье будущего от Ivan Dembicki:
Вообще, в ближайшей перспективе (лет 10) произойдет отрыв языков
программирования от их "родных" технологий. Зная AS можно будет писать
JS или си-шные проекты и наоборот.
Это мэйнстрим, если хотите. И этот мэйнстрим снесет любого гиганта,
стоящего у него на пути. Потому, что цена.
Вы пишете игру и выгоняете под разные платформы и технологии. Цена = X.
Вы пишете игру и портируете и переписываете под разные платформы и
технологии. Цена стремится к X*количество технологий.
Перед этим никто, ни Microsoft, ни Apple не устоит, если встанут поперек дороги.
Причины тому есть и очень серьезные:
1. размывание монополии Microsoft на ось.
Если раньше можно было говорить о тотальной монополии Microsoft, то
сегодня появились совершенно новые рынки, на которых уже не Microsoft
играет ведущую роль. (Пример Apple и iPhone вам в помощь)
2. Даже на родной территории Microsoft его начинают двигать все кому
не лень. И тенденция только усиливается. (Пример Google OS и Apple
также вам в помощь)
3. При увеличении количества моделей девайсов, даже внутри конкретной
платформы есть особенности моделей девайсов, которые нужно учитывать.
Их количество вскоре зашкалит настолько, что ни один человек не в
состоянии будет помнить все особенности при заточке под конкретный
девайс.
А теперь вспомним историю Java.
Разработчики Java изначально делали упор на кроссплатформенности.
Сишники, при виде сравнительных тестов производительности, хохотали до
слёз и пророчили скоропостижную смерть или вечное программирование
стиральных машин на этом языке.
И что произошло?
Сегодня Java исключительно в верхних позициях (чаще всего на первых)
любых рейтингов. Его производительность не вызывает смеха ни у кого, а
преимущества с каждым днем оттесняют остальные языки на второй план.
(Google по запросу "рейтинг языков программирования" вам в помощь)
Несмотря на то, что пользователей Mac и Linux было считанные единицы
по сравнению с Microsoft, принцип кроссплатформенности вывел Java на
первые позиции.
Но приходят новые времена и встают новые задачи. Кроссплатформенности
уже недостаточно. Нужна кросстехнологичность. Это возможно только при
использовании трансформации кода.
Схема развития событий, аналогичная Java, ожидает и кросстехнологичные
средства разработки.
Автокомплитов и рефакторингов уже недостаточно. И недостаточно
поддержки разных языков в одном редакторе. Возможность трансформации
кода под разные языки и платформы - вот что нужно.
Да, вначале таких будет немного и они будут кривоваты. Но со временем
эта машина отшлифуется и наберет обороты. Никто не захочет
отказываться от новых возможностей. Кто не успеет, тот опоздает.
Если вы думаете, что средства разработки конкурируют своим качеством и
стоимостью, то вы правы и неправы одновременно.
Средства разработки конкурируют только ценой конечного продукта.
Всякие автокомплиты и рефакторинги снижают цену конечного продукта,
позволяя меньше времени тратить на одни и те-же действия, заранее
обнаруживая ошибки, и так далее.
Но представьте, насколько снижает цену конечного продукта редактор,
позволяющий трансформировать код в другие технологии.
Бывают ситуации когда один мувик перекрывает другой и, даже если верхний мувик прозрачный, то до нижнего не достучаться и даже при наведении на него не работает buttonMode и useHandCursor, и смена иконки курсора при наведении на него не происходит.
Тогда нам поможет волшебное свойство mouseEnabled, просто пишем:
Наткнулся в интернете на код на actionscript 3, позволяющий удалять повторяющиеся значений из массива (код удаляет все найденные дубликаты, трипликаты и тд).
Код полезен и интересен тем, что показывается использование довольно новой функции array.some(), но недостатком является то, что не зная эту функцию сложно понять его работу. Этот же код можно переписать более просто и понятно.
Смысл работы прост - проверяем в цикле есть ли уже такое значение в нашем новом массиве, и если нет добавляем.
Код для удаления дубликатов из массива на actionscript3 для flash
package
{
import flash.display.Sprite;
/**
* ...
* @author andrew
*/
public class Test extends Sprite
{
public function Test()
{
var originalArray:Array = new Array("yellow", "red", "blue", "red", "yellow", "green", "yellow", "purple", "ginger", "red", "blue");
var dedupedArray:Array = new Array();
function ArrayProcess()
{
for each (var item:String in originalArray)
{
if (dedupedArray.indexOf(item)===-1)
{
dedupedArray.push(item);
}
}
trace("dedupedArray: "+dedupedArray);
}
Не помню уже где нашел в сети скрипт на actionscript 2 для анимации волн (эффект ряби), решил переписать его для as3.
Результат работы можно увидеть ниже.
Для использования надо просто создать мувик с нужной картинкой,
присвоить ему класс asflash.Wave
и поместить его на сцену.
Скорость и направление ряби задается параметром в вызове функции makeWave(-0.1), знак отвечает за направление, значение за скорость волн.
public class Wave extends MovieClip
{
private var w:Number;
private var h:Number;
private var ripple:BitmapData;
private var ripple3:BitmapData;
private var ripple2:BitmapData;
private var ripple1:BitmapData;
private var gradient:BitmapData;
private var gradient_mc:BitmapData;
private var offset3:Point;
private var offset2:Point;
private var offset1:Point;
private var speed1:Number;
private var speed2:Number;
private var speed3:Number;
private var pt:Point;
private var rect:Rectangle;
private var dMap:DisplacementMapFilter;
private var r1pt:Point;
private var r2pt:Point;
private var r3pt:Point;
private var r1rect:Rectangle;
private var r2rect:Rectangle;
private var r3rect:Rectangle;
private var seed:Number;
public function Wave()
{
makeWave(-0.1);
}
public function makeWave(str=-0.1)
{
w = this.width;
h = this.height;
ripple = new flash.display.BitmapData(w, h);
ripple3 = new flash.display.BitmapData(w, h / 2);
ripple2 = new flash.display.BitmapData(w, h / 4);
ripple1 = new flash.display.BitmapData(w, h / 4);
gradient = new flash.display.BitmapData(ripple.width, ripple.height);
gradient.draw(gradient, new flash.geom.Matrix(1, 0, 0, 1, 0, 0));
offset3 = new flash.geom.Point(0, 0);
offset2 = new flash.geom.Point(0, 0);
offset1 = new flash.geom.Point(0, 0);
speed1 = 1*str;
speed2 = 2*str;
speed3 = 4*str;
pt = new flash.geom.Point(0, 0);
rect = new flash.geom.Rectangle(0, 0, ripple.width, ripple.height);
Ошибка "1151: A conflict exists with definition your_mc in namespace internal" возникает в среде разработки Flash при программировании на actionscript 3, когда вы пытаетесь еще раз задекларировать уже существующие экземпляры.
Чтобы избавиться от нее нужно отключить автоматическую декларацию экземпляров в настройках публикации flash:
Решил тут записывать о моментах возникающих в разработке на Flash (AS), себе для памяти, а может кому еще пригодится.
Практически все знают, что IE очень своеобразный браузер, но он все еще не перестает меня удивлять. Даже казалось бы в кроссплатформенный флеш он вносит свои коррективы.
VS
Итак был себе мирно код для прелоадера на AS3, никого не трогал: