Flash: вопросы и ответы

Woozle

Старожил
сердечно просим тов. Прохожего(или другого благодетеля) скачать 8-й Flash :)
http://www.macromedia.com/cfusion/tdrc/ ... t=flashpro

Добавлено спустя 54 секунды:

ЗЛОЙ_КОШАК":jv2d7znz сказал(а):
Где можно нарыть прогу, кторой можно было бы флешевый ролик расковырять, музычку там вытащить кртиночки.... вроде видел где-то на форуме, теперь найти не могу поиск тут какой-то кривой :(
SWF Decompiler
 

Ooa

Старожил
лень было выкладывать раньше эту статью, но сейчас наболело...

Что такое Flex и что такое ActionScript 3.0. Расставим точки над i: Примечание второй редакции: речь идет уже о Флекс 2, имеющий на порядок большие возможности, да еще и объявленной Adobe официально бесплатной. Я умышленно вырезал все, что касалось только версии 1.5. Не думал, что придется писать этот пост. Не хотел. Пришлось. Последнее время я встречаю десятки людей, заблуждающихся и несправедливо связывающих AS3 и Flex. Спору нет, AS3 пока можно попробовать лишь при помощи Flex Builder 2, который, в полной версии, будет его поддерживать. Но! ActionScript 3.0 -- будущее всей Flash Platform в целом и для меня, человека, использующего Flex пока реже, чем Flex, AS3 -- это будущее Flash. Не надо связывать его только с Flex. Продолжаем. Есть индивидуумы, порой даже модераторы одного крупного ресурса о Flash в Рунете, которые вообще не знают, что такое Flex. Итак, Flex -- это родственная Flash технология, основанная на описании интерфейса приложения с помощью диалекта XML -- MXML. Flex приложение может компилироваться на сервере, а может -- из IDE, как во Flash, результатом является swf файл. Достоинства Флекса тесно связаны с его недоcтатками, а точнее -- спецификой применения. Без загрузки внешних роликов (нет, что вы, возможность такая ни куда не делась, это гипотеза) мы не можем создать экстраординарного интерфейса, точнее, это сложнее, чем во Flash. Но в случае со строгими интерфейсами бизнес-приложений скорость разработки просто потрясающая, ничего подобного ни Flash, ни AJAX предложить не могут. Судите сами: Объекты связываются посредством событий либо в коде, либо в интерфейсе (в режиме Design). Морщащихся программистов успокоим тем, что при желании вам доступна каждая строка кода. Поведения: то есть, к примеру, анимации появления, скрытия и т.п., описываются тэгами и могут быть привязаны к объекту / событию / смене состояния приложения, опять же, без написания собственного кода. Зачем прописывать руками очевидные вещи? Во Flex существует модель состояний. Совокупность объектов и их позиций, а также значений свойств -- состояние. Мы можем переходить из состояния в состояние с помощью транзиженов, связывая одно с другим посредством третьего прямо в описании интерфейса. Нам доступны мощные средства для контроля layout, которые во Flash делались руками. Мы можем связывать объекты, содержащие изменяющиеся данные, например, DataGrid, ComboBox и т.п., можно связывать с источниками данных без компонентов, напрямую. Источниками этими могут быть как XML документы, разной масти Value Objects, объекты RecordSet из БД, данные, полученные у вебсервисов и т.п. Все это может сделать даже дизайнер, понимающий по-английски и немного представляющий, что же такое есть связывание данных. Собственные компоненты создаются до смешного просто: составьте интерфейс вашего компонента, опишите событийную модель, свяжите, если надо, компонент с данными (можно прямо в интерфейсе), и все. Никаких описаний обработчиков для ресайза, никаких сложных структур классов, в которых зашит GUI, всего этого при вдумчивом подходе вы избежие, сэкономив время. Вся мощь огромного количества революционных нововведений ActionScript 3.0 поможет вам в этом. Также Флекс славен своими графиками, компоненты для построения которыхсделаны не только удобными для использования, но и в 99% случаев выглядят приемлимо для использования as is. Пример -- графики Google Analytics. Грустно, что люди, зарабатывающие Flash разработками в России, в большинстве своем не знают о Flex ничего... А ведь Flex 2 SDK (плагин к Эклипсу, компилятор, документация) Adobe сделала официально бесплатной. Да и цена Flex Enterprise Services доступна теперь и в России -- < $1K. Да, более чем в 10 раз дешевле, чем предыдущая версия. -- 14 ноября 2005, обновлено 16 февраля 2006, Майкл Клишин

Добавлено спустя 1 минуту 22 секунды:

личное мнение, интерфейс настолько неудобный, насколько только может быть неудобным интерфейс.

боюсь, это плохо кончиться... :roll:
 

Tutty

Бывалый
хотела сделать слайдшоу jpg , создала кнопки вперёд , назад , все фото переименованы в image1.jpg, image2.jpg и т.д.
аctionscript:
var picLoader:MovieClipLoader();
var pic:Number=1;
var maxPic:Number=40;
var alphaStep:Number=10
holder._alpha=alphaStep;
_root.createTextField("display",1,275,200,0,0);
display.autoSize="center";
display.textColor=0xff0000;
nextPic.onPress=function() {
if (pic<maxPic && !fadeIn &&!fadeOut &&loadProgress==100) {
pic++;
fadeOut = true;
}
};
prevPic.onPress=function() {
if (pic>1 && !fadeIn &&!fadeOut &&loadProgress==100) {
pic++;
fadeOut = true;
}
};
_root.onEnterFrame=function() {
loadProgress =
Math.round(holder.getBytesLoaded()/holder.getBytesTotal()*100);
if (loadProgress<100) {
display._visible=true;
display.text=loadProgress+"%";
}
else display._visible=false;
if (holder._alpha>=alphaStep && fadeOut) {
holder._alpha -= alphaStep;
}
if (holder._alpha<=alphaStep) {
picLoader.loadClip("Image"+pic+".jpg",holder);
fadeOut = false;
fadeIn = true;
}
if (holder._alpha<=100 && fadeIn && !fadeOut) {
if(loadProgress>=100)holder._alpha += alphaStep;
}
else {
fadeIn = false;
}
};

но всё равно не работает , где ошибка ?
 

Woozle

Старожил
все работает ок, если исправить ошибку первой строки, кот., в принципе, и так должна была вылететь при компиляции.
Код:
var picLoader:MovieClipLoader = new MovieClipLoader();
и, если клип holder не создан вручную, то он создается программно

_root.createEmptyMovieClip("holder", 0);

правда, не совсем ясно, зачем использовать класс MovieClipLoader, если он здесь используется минимально(ведь у него возможности довольно широкие). Вполне можно было обойтись и loadMovie().
Имхо, ф-ция onEnterFrame сделана несколько извратно :) . Я бы так не изощрялся. И эти переменные с булевыми значениями... одна путанница(по крайней меня, для меня в 2 часа ночи).
 

Woozle

Старожил
о, у меня утром наступило прозрение :)
но все же, можно бфло обойтись и одной переменной с булевым значением. Есть ошибка в обрааботчике кнопки prevFrame. Там, естевственно, необходимо
pic--;
К тому же код ф-ции onEnterFrame будет нормально работать, только если имеются все фотки в кол-ве maxPic, ибо при обращении на несуществующую фотку происходит циклическая ошибка, кот. непрерываема => алгоритм сбивается. Лучше вообще всю ф-цию onEnterFrame переписать.
 

Tutty

Бывалый
что-то именно после загрузки Image5.jpg ничего не загружается
уже и меняла снимки и удаляла Image6.jpg
в моём компе всё нормально , а на сервере не хочет дальше 5го загружать
action см. выше
в чём ошибка?
 

Woozle

Старожил
http://shooting.gtn.ru/xz/ работает? там 9 фоток.(после нее нельзя будет ни вперед, ни назад двигаться, ибо onEnterFrame глючный(я его не редактировал)).
 

Tutty

Бывалый
не у меня 60 фоток , но глючит после 5ой , на компе норм , а на сервере глючит
 

Woozle

Старожил
ну вот я даю тебе тэстить правильность нового кода. Как никак, а я к по отношению к тебе сервер, даже удаленный :)
 

Tutty

Бывалый
у тебя после последней , кнопка ">" срабатывает
ты не подскажешь чё у меня не правильно , я первую строку поменяла в своём скрипте
 

Woozle

Старожил
Честно говоря, не знаю... видимо, происходит ошибка, кот. я не улавливаю. А работает у меня потому, что я таки не сдержался и переписал почти весь код, и стал он достаточно простеньким и прозрачным. Использует в полной мере класс MovieClipLoader.
Собственно, на сцене имеются кнопки nextPic и prevPic, а также текстовое поле под номер картинки txt.
AS:
Код:
var picLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
picLoader.addListener(listener);
_root.createEmptyMovieClip("holder", 0);
_root.createTextField("display", 1, 275, 200, 0, 0);
var pic:Number = 1;
var maxPic:Number = 60;
var i:Number = 1;
var flag:Boolean = false;
holder._alpha = 10;
display.autoSize = "center";
display.textColor = 0xff0000;
picLoader.loadClip("Image"+pic+".jpg", holder);
function initButtons():Void {
	flag = false;
	i = -1;
	holder.onEnterFrame = fading;
	txt.text = pic+"/"+maxPic;
}
nextPic.onPress = function():Void  {
	if (pic<maxPic && flag) {
		pic++;
		initButtons();
	}
};
prevPic.onPress = function():Void  {
	if (pic>1 && flag) {
		pic--;
		initButtons();
	}
};
listener.onLoadStart = function():Void  {
	display._visible = true;
	display.text = "0%";
};
listener.onLoadProgress = function():Void  {
	var loadProgressObj:Object = picLoader.getProgress(holder);
	var loadProgress:Number = Math.round(loadProgressObj.getBytesLoaded/loadProgressObj.getBytesTotal*100);
	display.text = loadProgress+"%";
};
listener.onLoadComplete = function():Void  {
	i = 1;
	holder.onEnterFrame = fading;
	display._visible = false;
};
listener.onLoadError = function(clip, message):Void  {
	display._visible = true;
	if (message == "URLNotFound") {
		display.text = "Неверно указан адрес.\n Загрузка Image"+pic+".jpg невозможна";
	} else if (message == "LoadNeverCompleted") {
		display.text = "При загрузке возник сбой";
	}
};
function fading():Void {
	this._alpha = this._alpha+10*i;
	if (this._alpha>=100) {
		this._alpha = 100;
		flag = true;
		delete this.onEnterFrame;
	} else if (this._alpha<=0) {
		this._alpha = 0;
		delete this.onEnterFrame;
		picLoader.loadClip("Image"+pic+".jpg", holder);
	}
}
 

Tutty

Бывалый
кнопка назад очень глючит (проверял , тебе проще будет меня послать :lol: )
и после последней не загружается "назад" а показывает "0%"
 

Woozle

Старожил
аа... я уже ничего не понимаю :)
ты про чей код говоришь? :)
если про мой, то у меня действительно имеется ошибка.Необходимо после этой строки кода

listener.onLoadError = function(clip, message):Void {

добавить сие

flag = true;

тогда вроде точно сбоев нет.
 
Верх