PDA

Просмотр полной версии : Через сколко лет будет повсеместный переход на AS3 ?


Stas52
15.08.2008, 17:37
Товарищи, сейчас подавляющее большинство программистов пишут на AS1/AS2. Какие прогнозы на будущее? Примерно через сколко лет будет повсеместный переход на AS3 ?

_Smirnoff
15.08.2008, 18:01
Когда будет 11 плеер думаю...

Stas52
15.08.2008, 18:07
А в годах можно спрогнозировать? Это будет ближе к 1, 5 или 10 годам?

etc
15.08.2008, 18:23
Когда станет стыдно.

Stas52
15.08.2008, 18:30
Да вобщем-то мне уже стыдно. Поэтому и итересуюсь. Может пора уже забросить AS2 и браться учить AS3 ?!!

AL.exe
15.08.2008, 18:37
Да. Пора :)

Я вот не жалею.

Snut
15.08.2008, 18:44
Господа, разные задачи, разные версии языка, не могу правда провести параллель с тем же php и иже с ними... но такова моя точка зрения. Всегда будут заказчики с требованием "а вот хочу чтобы и под 6 плеер игралось" и вот хоть ты тресни.

CrazyFlasher
15.08.2008, 20:21
давно пора :)

Tfp
15.08.2008, 20:42
немного другой вопрс возник читая тему: стоит ли учить as2/as1 тем кто начал изучать сразу AS3 ?

kia007
15.08.2008, 20:57
немного другой вопрс возник читая тему: стоит ли учить as2/as1 тем кто начал изучать сразу AS3 ?

Ну если только чтоб понимать чужой код.

Кстати хотелось бы сказать, что переход на 3.0 происходит достаточно быстро...особенно для тех кто когда то программил на других ооп языках.

jaguard
15.08.2008, 21:53
Разве покрытие 9-м плеером не больше 90 процентов? какой смысл писать под AS2?

А впрочем, согласно Adobe, разница в покрытие между 8 и 9 плеерами составляет не больше пары процентов:
http://www.adobe.com/products/player_census/flashplayer/version_penetration.html

Товарищи, сейчас подавляющее большинство программистов пишут на AS1/AS2
Это в самом деле так?

wvxvw
15.08.2008, 22:16
Это в самом деле так?

Судя по форумам - да. Реально сказать конечно тяжело. Но если предположим, полгода назад вопрос типа "как сделать кнопку на баннере" в темах посвященных АС3 практически не случался - то сейчас это стало вполне обычным явлением. Но самое серьезное пополнение будет когда выпустят новую версию ЦС/Флеша - т.е. старую (ЦС3) будут продавать по гораздо более низкой цене (я Флеш 8 видел за $50 что ли...), тогда уже только ленивый не проапдейтится =)

ЗЫ.
Еще вот недавно попался чужой ФЛА сделаный в ЦС3, и вдруг вижу в нем странно так оформленные onClipEvent(){loadMovieNum(...)} С какими-то безумными каментами =) Спросил у человека, который это ваял, откуда такое чудо - оказалось в Флеш есть такая штука, ScriptAssist... а еще оказалось, в Флеше есть заготовки под галерею / слайдшоу и т.п. написаные в самых худших традициях АС1/2... =)

ЗЫЫ.
Зато почерпнул много нового про АС2 =) Например, а знали ли вы про существование таких глобальных переменных как:
_accProps или _level? Я нет =)

DarkLight
15.08.2008, 23:34
Исчезнет тогда, когда Flash Lite, Flash Player for PSP, Flash Player for Wii будут поддерживать AS3. А это - не раньше чем выход 10го плеера + год-два

Anry_coolboy
16.08.2008, 17:14
Все зависит от задачей, AS1 использовался только для банеров, было несколько команд stop(), play(). AS2 уже расширил свои возможности и дал возможность создавать что то по серьезнее, не плохой язык, если надо что то быстро склипать то довольно удобно. AS 3 уже более структурирован и инетересней, очень много новых возможностей, особенно в 3D. Так что каждый выбирает тот язык на какую задачу он будет ореинтирован.


оказалось в Флеш есть такая штука, ScriptAssist... а еще оказалось, в Флеше есть заготовки под галерею / слайдшоу и т.п. написаные в самых худших традициях АС1/2... =)

ЗЫЫ.
Зато почерпнул много нового про АС2 =) Например, а знали ли вы про существование таких глобальных переменных как:
_accProps или _level? Я нет =)

В любой книге по флешу рассказывается про ScriptAssist, так же кнопку всегда можно увидеть когда открываешь поле Actions.
Заготовки то ж можно было увидеть когда создаешь новый файл.....

А _level можно увидеть когда просто трейсишь какой нить объект лежащий на TimeLine...... (в AS2)

Такие вещи замечаются обычно при первом знакомстве с флешом!!!!!!!!!!!

wvxvw
16.08.2008, 17:35
В любой книге по флешу рассказывается про ScriptAssist, так же кнопку всегда можно увидеть когда открываешь поле Actions.
Заготовки то ж можно было увидеть когда создаешь новый файл.....

А _level можно увидеть когда просто трейсишь какой нить объект лежащий на TimeLine...... (в AS2)

Такие вещи замечаются обычно при первом знакомстве с флешом!!!!!!!!!!!

_level в качестве глобальной переменной? Да ни разу в жизни мне не попадалось =) я думаю, что больше 1000 исходников чужих видел, и ни разу =) Я думал, что "_level" это просто строка, которая подставляется, если имя клипа не указано, типа как "instance#", но это как бы вполне полноценная глобальная переменная. Ну и, опять же делать какие-то флешки с использованием AccessibilityProperties - просто редкость помоему...
И, если честно, ну, не приходится скрипт на таймлайне писать, кроме каких-то коротеньких примерчиков - вот поэтому как-то ScriptAssist и выпал из поля зрения =) И учебников по АС я не читал кроме Гурского, и то в далеком прошлом... =(
ЗЫ. А первое знакомство было у мну в 1999, просто, наверное уже не помню... =)

ramshteks
16.08.2008, 17:41
мне кажется... когда адоба выпустит версию плеера которая уже не будет проигрывать ас1/2 скрипты, а большинство браузеров обзаведуться именно этой версией плеера по дефолту, тогда может быть и перейдут.
а так я думаю еще очень долго мы будем видеть старые duplicateMovieClip и getURL в проектах созданных на базе adobe flash CS3)

PeTa4eK
16.08.2008, 18:12
Я думаю что люди просто боятся чего то нового. Допустим та же виста. Я лично не стал медлить, как токо вышел новый флеш сразу начал интересоваться ас3. Мне кажется что в ас3 намного больше возможностей. В том числе производительность и удобство написания кода в классах.
Вообщем давно пора!

Snut
16.08.2008, 18:34
PeTa4eK, как говорится, добро пожаловать в мир AVM2

enepx
16.08.2008, 20:20
...удобство написания кода в классах.
Вообщем давно пора!
Не знаю, я практически всегда писал АС2 исключительно классами, ибо был уже тогда знаком с C++/Java. Просто в АС3 классы больше похожи на классы как таковые в более совершенных языках.

firsoff
17.08.2008, 00:16
принципиально решил для себя год назад - заказчика которому надо AS1-2 код посылать подальше. не хочешь AS3 - до свидания.
Нисколько не пожалел, кстати в основном упираются отечественные заказчики (тут наверно срабатывает консервативный менталитет), сейчас ситуация складывается так что на AS3 заказы более интересные (в плане реализации, денежности).
Так что прочь сомнения и вперед в AS3, не пожалеешь - это точно!
С уважением.

Kamchatka
17.08.2008, 20:56
Примерно через сколко лет будет повсеместный переход на AS3 ?
Повсеместного перехода не будет никогда.

Котяра
18.08.2008, 11:16
Еще один аспект - успешные существующие проекты на AS2, которые начальство не даст переделывать под AS3 (вернее надо очень постараться убедить)

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

Snut
18.08.2008, 12:39
надо убеждать начальство делать рефакторинг под ас3, показывать тесты производительности, всяческие новые плюшки которые появились вместе с ас3 и т.д. и т.п.

wvxvw
18.08.2008, 12:57
Я свое начальство почти укатал, даже демку сделали, но, млин, не вписались в сроки... =( совсем чуть, но все равно, вот теперь ждать до конца сентября пока можно будет что-то переделать.
Но, как вариант, чего сделал: написал на АС2 классы типа Евент, ЕвентДиспатчер, ну, на сколько это возможно было ХМЛ, РегЕксп и т.д. Ну и "втихую" переделываю основной проект в таком духе, чтобы когда портить буду остались только addChild() заменить =)
Т.е. вот пример кода на АС2, ну, фактически останется только заменить addFormElement() на что-нибудь более удобоваримое, и вполне можно просто копипастить =)
import flash.geom.Point;
import flash.geom.Rectangle;

import com.aditall.events.CustomEvent;

import com.aditall.forms.fe.SButton;
import com.aditall.forms.fe.SExtendedPreview;
import com.aditall.forms.SForm;

import com.aditall.gui.GFX;
import com.aditall.gui.FootageThumbnail;
import com.aditall.gui.Timeline;

import com.aditall.player.Player;

import com.aditall.core.Mixer;

import com.aditall.utils.Tracer;
import com.aditall.utils.XMLC;
import com.aditall.utils.Footage;
import com.aditall.utils.StringUtils;

import com.aditall.transitions.Tween;
import com.aditall.transitions.easing.None;

/**
* Class FootageForm. Creates a form for displaying and managing imported Footages.
* @author wvxvw
*/
class com.aditall.forms.FootageForm extends SForm
{
public static var OPEN_GALLERY:String = "openGallery";
public static var FOOTAGE_REMOVED:String = "footageRemoved";

public var className:String = "FootageForm";

private var _previews:Array;
private var _vPos:Number;
private var _fThumb:FootageThumbnail;
private var _xmlc:XMLC;
private var _removeTween:Tween;
private var _tweenedThumbnails:Array;
private var _top:Number;
private var _removedFootage:Object;

/**
* Constructor. Creates new instance of FootageForm.
* @param clip MovieClip. The clip used for constructing a form.
*/
public function FootageForm(clip:MovieClip)
{
super(clip, FOOTAGE);
_previews = [];
_vPos = 72;
_xmlc = Player.getInstance().footages;
addFormElement(new SButton(getNextClip(), this,
{
ntext:"Open footage gallery",
rectangle:new Rectangle(30, 32, 325, 30),
cl:GFX.BLUE,
fs:11,
fevent:OPEN_GALLERY
}));
var i:Number;
var l:Number = _xmlc.length();
var f:Footage;
for (i = 0; i < l; i++)
{
f = new Footage();
f.url = _xmlc[i].$file;
f.description = StringUtils.collate(_xmlc[i].$description, 20);
f.bitmapURL = _xmlc[i].$thumbnail;
f.ID = _xmlc[i].$ID;
addToGallery(f);
}
}

/**
* @private
* @param evt CustomEvent.
*/
public function customEventHandler(evt:CustomEvent):Void
{
switch(evt.message)
{
case OPEN_GALLERY:
dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT, Mixer.FOOTAGE));
break;
case SExtendedPreview.SELECT_FOOTAGE:
handleFootageSelect(evt);
break;
case SExtendedPreview.UNSELECT_FOOTAGE:
handleFootageUnselect(evt);
break;
case SExtendedPreview.DRAG_FOOTAGE:
handleFootageMove(evt);
break;
case SExtendedPreview.REMOVE_FOOTAGE:
handleFootageRemove(evt);
break;
default:
Tracer.out(evt.toString(), this);
break;
}
}

private function valueChange(v:Number):Void
{
if (box.h > _base._height)
{
if (_base._y < 0) _base._y = 0;
return;
}
var k:Number = _base._height / 800;
_base._y = Math.round((box.h - (_base._height + (v * k))) * (v - 6) / 100);
}

/**
* Adds new Footage to the list of available footages.
* @param footage Footage. The Footage to be added.
*/
public function addToGallery(footage:Footage):Void
{
var nextVPos:Number = _vPos + _previews.length * 80;
var preview:SExtendedPreview = SExtendedPreview(addFormElement(new SExtendedPreview(getNextClip(), this,
{
rectangle:new Rectangle(30, nextVPos, 325, 75)
})));
preview.setVal(footage);
_previews.push(preview);
}

/**
* Removes the Footage form the list.
* @param footage Footage. The Footage to be removed from the list.
*/
public function removeFromGallery(footage:Footage):Void
{
var i:Number;
var l:Number = _previews.length;
var preview:SExtendedPreview;
if (!_removeTween)
{
_removeTween = new Tween( { i:0 }, "i", None.easeNone, 0, 80, .5, true);
_removeTween.stop();
_removeTween.addListener(this);
}
for (i = 0; i < l; i++)
{
preview = _previews[i];
if (preview.val == footage)
{
_top = preview.y;
_removedFootage = {position:i, ID:footage.ID };
_previews.splice(i, 1);
preview.deleteContent();
deleteElement(i + 1);
_tweenedThumbnails = _previews.slice(i, l);
_removeTween.start();
break;
}
}
}

private function onMotionStarted():Void
{

}

private function onMotionChanged():Void
{
for (var i:Number = 0; i < _tweenedThumbnails.length; i++)
{
SExtendedPreview(_tweenedThumbnails[i]).y = (_top + (i + 1) * 80) - _removeTween.obj.i;
}
}

private function onMotionFinished():Void
{
dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT, FOOTAGE_REMOVED, _removedFootage));
}

private function handleFootageSelect(evt:CustomEvent):Void
{
var preview:SExtendedPreview = SExtendedPreview(evt.target);
var footage:Footage = Footage(evt.val.f);
_fThumb.removeContent();
_fThumb.removeEventListener(CustomEvent.CUSTOM_EVENT, handleThumbNailRemoved, this);
_fThumb = new FootageThumbnail(_root, _root._xmouse - evt.val.x, _root._ymouse - evt.val.y);
_fThumb.addEventListener(CustomEvent.CUSTOM_EVENT, handleThumbNailRemoved, this);
_fThumb.setThumbnail(footage.bitmap.clone());
_fThumb.select();
}

private function handleThumbNailRemoved(evt:CustomEvent):Void
{
_formManager.getTimeline().highLightLayer(-1);
}

private function handleFootageMove(evt:CustomEvent):Void
{
_fThumb.move(evt.val.x, evt.val.y);
var sp:Point = evt.target.getClickLocation();
var layerID:Number = _formManager.getTimeline().getLayerAtPosition(new Point(evt.val.x + sp.x, evt.val.y + sp.y));
_formManager.getTimeline().highLightLayer(layerID);
}

private function handleFootageUnselect(evt:CustomEvent):Void
{
_fThumb.playRemove();
}

private function handleFootageRemove(evt:CustomEvent):Void
{
removeFromGallery(Footage(evt.val));
_fThumb.removeContent();
}
}

vvk80
18.08.2008, 14:30
тут вот меня удиивил вопрос цены при апгрейде на сs3, AS3... неужто для России это становится актуально???