PDA

Просмотр полной версии : люди просвятите меня беднягу:(


Fapser
09.11.2003, 18:59
вот типа у меня появляются мувы с разными параметрами... код в первом и единственном кадре..все работает:)

_root.onEnterFrame = function(){
duplicateMovieClip (muv, "muv"+i, i)
setProperty ("muv"+i, _x, 250);
setProperty ("muv"+i, _y, 250);
setProperty ("muv"+i, _alpha, random(275));
setProperty ("muv"+i, _xscale, random(50));
setProperty ("muv"+i, _yscale, random(50));
i++;

}


мне нужно чтоб они летели по разным траекториям параболы... куда мне написать код который внизу ... и вообще как качественней и правильней его написать????



_root.onEnterFrame = function() {
x++;
y = ((Math.pow(x, 2))*-0.02)+130;
_root.eval("muv"+i)._x = x;
_root.eval("muv"+i)._y = y;
if (_root.eval("muv"+i)._x>150) {
x = -150;
}
};

Dagi
09.11.2003, 20:11
Ну и набородил же ты. В первом примере невероятная смесь кода Flash MX с Flash 5. Второй абсолютно неверен. eval - это глобальная функция. ЕЕ нельзя вызывать как метод. Советую перед тем, как что-то писать, прочитать книжку. Иначе и объяснять не имеет смысла.

Dagi
09.11.2003, 20:12
Вернее, в первом смесь Flash MX и Flash 4. setProperty() уже давно не имеет смысла использовать

Fapser
10.11.2003, 10:23
как раз, это пример(первый блок где сет пропоти) из книжки по Flash MX:))

если знаешь как сделать я бы с удовольствием узнал..... а книжка это не догма здесь в форуме намного больше знаний....:)

Fapser
10.11.2003, 12:28
может мне кто-нибудь помочь?

mishinaelle
10.11.2003, 12:53
вот исходник с тем что тебе нужно. если непонятно - пиши в аську

Nox Noctis
10.11.2003, 13:08
Оригинал написал(а) Dagi
eval - это глобальная функция. ЕЕ нельзя вызывать как метод. Советую перед тем, как что-то писать, прочитать книжку. Иначе и объяснять не имеет смысла.
вообще-то, евал - это НЕ функция :)
ну и не метод, этода, что есть то есть... :))

евал для виртуальной машины флэша - это макрос

зы:
да, и при желании можно ведь определить
_root.eval = function () { .... }

Fapser
10.11.2003, 19:52
mishinael :вы мне swf выложили, и там происходит просто изменение размеров прямоугольника....:( можно посмотреть fla....может я не так объяснил: хотел узнать как дублировать определенное количество мувов типа в цикле....до какого то определенного количества.....и чтоб каждый экземпляр двигался с разной скоростью и с разной траекторией НО по параболе ...

по отдельности я представляю как это сделать НО вот как сделать вместе что где писать....т.е. где писать код для движения по параболе....где писать код дублирования мувов....в кадре все ИЛИ часть в кадре а часть в в муве который будет дублироваться...я знаю что это стандартно как то решается Но вот как?:(.... примного благодарен:)
Nox: я с вами согласен....хе хе по поводу eval....




кстати любезнейший Dagi....такие уважаемые люди как Денис Грибов без зазрения совести используют setProperty() ... я уверен что решить эту задачу можно многими способами...вплоть до рисования мувов которые двигаются по Гуид ... и только изменять их размер:)) ... так что Регардсы..
P.S. а ссылаться на книжку....типа нет времени на вас ламеры....и не подсказав ничего самому я считаю верх не профессионализма:) ... тем более это форум где люди задают вопросы а другие отвечают - обмен опытом...без обид я высказал свое мнение

mishinaelle
10.11.2003, 20:03
2 Fapser: сорри, не то зазиповала :) конечно хотела дать тебе fla-файл. вот, бери :)

Fapser
11.11.2003, 11:06
Спасибо
то есть я понял так что сначала выполняется блок:_root.onEnterFrame = function(){... и только в нем вызывается функция движения мувов}..... тогда у меня вопрос:

1) почему мувы сначала появляются на одном месте а двигаться начинают с другого...? координаты не сохраняются?

2)а как сделать чтоб мув тока появился и сразу бы двигался?

Nox Noctis
11.11.2003, 11:24
2mishinaelle
там не нужен двухкадровый луп.
достаточно вообще одного кадра..
_root.onEnterFrame = function() {
var newname = attachMovie("test_mc", "muv"+i, i);
newname._x = 250;
newname._y = 250;
newname._alpha = random(275);
newname._xscale = random(50);
newname._yscale = random(50);
newname.onEnterFrame = MoveMovie;
if (i++>=iMaxCounter) {
delete _root.onEnterFrame;
}
};

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

Fapser
11.11.2003, 11:30
и еще вопросик :) почему ты не меняешь координату _y напрямую а через переменную у?

Fapser
12.11.2003, 12:40
вот с помощью одной замечательной девушки (mishanielle)получилось см. прикрепленный файл...НО .. как сделать чтоб мувы летели по РАЗНЫМ траекториям-половинкам парабол?

Fapser
12.11.2003, 12:41
вот с помощью одной замечательной девушки (mishanielle) получилось см. прикрепленный файл...НО .. как сделать чтоб мувы летели по РАЗНЫМ траекториям-половинкам парабол?

Fapser
12.11.2003, 12:43
:))))))) вот файл....парюсь уже

Dagi
12.11.2003, 14:14
Так. Кто-то опять попытался меня засрать, не разобравштсь:)
Под глобальной функцией понимается функция, входящая в цепочку областей видимости (scope chain) любого исполнимого кода в фильме. В реалиях ECMA-262 глобальной функцией является любой метод объекта Global (_global в ActionScript) (метод - это свойство объекта, значением которого является функция). Именно таким методом является eval(). А что уже ей соответсвует на уровне реализации - это не важно. Один из смыслов существования языков высокого уровня - это отказ от необходимости задумываться об особенностях реализации машины (реальной или виртуальной - как в случае Flash-плеера). Поэтому eval() абсолютно корректно называть глобальной функцией. Кстати, именно функцией она называется в ECMA-262 и словаре ActionScript.

Nox Noctis
12.11.2003, 14:37
понимаешь, форма подачи твоих высказываний вызывает стойкое желание придраться к их смыслу :)
В реалиях ECMA-262 глобальной функцией является любой метод объекта Global (_global в ActionScript). .... Поэтому eval() абсолютно корректно называть глобальной функцией.
ууу... правда ? :)
ASSetPropFlags(_global, null, 8, true);
for (var i in _global) {
if (i == "eval") {
trace("bingo !");
}
}муа-ха-хааа... :))
или вот еще:
trace(typeof (eval));ччччерт... :))

а про макрос я сказал только потому, что у этой.. кхм.. функции вообще нет своего тела. это похоже больше всего на макрос ассемблера ФЛМ. потому как в байткодах
eval("name");
дает только
push 'a'

зы: и у меня не было ни малейшего желания задеть ваше самолюбие в области концепций ЯВУ :)

Nox Noctis
12.11.2003, 14:41
сорри, там было:

eval("name");
дает только
push 'name'

Fapser
12.11.2003, 15:01
люди я конечно понимаю что очень важно выяснить кто прав....но....может вы мне поможите? я там исходник скинул

Fapser
12.11.2003, 15:07
я правильно понимаю...что для того что бы сделать чтобы:) каждый мув двигался по своей траектории из одной и тойже точки надо чтобы траектория его движения просчитывалась в нем самом...т.е. вытащить его из библиотеки на сцену...и записать в нем код просчета траектории и код движения....а в MainMovie....(который я повернул) прописать сколько их появляется, размеры их, прозрачность....так...или я опять путаю?

Dagi
12.11.2003, 22:00
Дело в том, что в ActionScript eval() - это лишь намек на eval()
ECMAScript(). По идее, она должна переводить строки в исполнимый код - но в ActionScript этого по вполне очевтдным причинам этого не происходит.
В ECMA-262 (в соответсвии которому ActionScript) eval() явно прописана как метод объекта Global. Так что в данном случае моя ошибка - результат несоответсвия стандарту самого языка.

Nox Noctis
13.11.2003, 00:41
Оригинал написал(а) Dagi
моя ошибка - результатээ... а вот с ЭТИМ как раз никто и не спорил :))

но фраза насчет засрать не разобравшись - мне понравилась :)

все, харош бороздить космическими кораблями просторы большого театра... пиво греется :)))

Dagi
13.11.2003, 10:58
Кстати, уважаемый Nox, странно, что вы используете функцию ASSetPropFlags не совсем верно. Ее четвертый парамаетр - это не булеан. То же, что ваш код работает, связано с автоматическим преобразованием типов.
Цитирую описание:
Функция AsSetPropFlags (obj, props, allowTrue, allowFalse) требует задания следующих параметров:
 obj. Объект, атрибуты свойств которого будут переопределяться.
 props. Список свойств, для которых необходимо установить атрибуты. Может быть или массивом, содержащим имена свойств в строковом представлении, или строкой, хранящей необходимые данные в виде последовательности идентификаторов, разделенных запятыми:
[“prop1”, “prop2”, “prop3”] // Список свойств в виде массива
“prop1, prop2, prop3” // Список свойств в строковом представлении
В том случае, если значением данного параметра является null, переопределение атрибутов проводится для всех свойств объекта.
 allowTrue. Число, хранящее три поразрядных флага для каждого из атрибутов. Флаг первого разряда отвечает за атрибут DontEnum (скрытие от цикла for-in), второй – DontDelete (запрещение удаления), третий – ReadOnly (защита от переопределения). Возможные варианты установки флагов приведены в таблице 2.4:
Таблица 2.4. Варианты определения атрибутов свойства
Флаги Величина
allowTrue Возможно ли
переопределение? Возможно ли
удаление? Возможно ли перечисление?
000 0 Да Да Да
001 1 Да Да Нет
010 2 Да Нет Да
011 3 Да Нет Нет
100 4 Нет Да Да
101 5 Нет Да Нет
110 6 Нет Нет Да
111 7 Нет Нет Нет
При помощи параметра allowTrue можно поднять флаги атрибутов, но не опустить их. То есть, если свойство защищено от удаления, то, введя в качестве n число 0, вы не сделаете его удаляемым. Чтобы установить для какого-то атрибута значение 0, нужно задействовать четвертый параметр рассматриваемой функции.
По умолчанию, практически для всех свойств и методов встроенных объектов ActionScript было использовано значение allowTrue, равное 7: их нельзя перечислять циклом for-in, удалять и переопределять (некоторые свойства можно задавать самостоятельно – им соответствует значение n=3).
 allowFalse. Параметр, полностью аналогичный n, но служащий не для поднятия, а для опускания флагов атрибутов. Чтобы снять с какого-то атрибута защиту, в заданном для данного параметра числе соответствующий флаг нужно установить, как 1. То есть, если создать для allowFalse таблицу, подобную приведенной выше для allowTrue, то элементы в ней будут прямо противоположными.
Параметр allowFalse появился во Flash MX. Во Flash 5 задачу как поднятия, так и опускания флагов атрибутов выполнял третий параметр функции AsSetPropFlags(). Параметр allowFalse не является обязательным для задания.

Fapser
13.11.2003, 12:10
ты не с Nox - ом спорь а мне помоги...:)

mishinaelle
13.11.2003, 12:48
2 Dagi: уважаемый!
не мог бы ты скинуть мне документацию из которой ты взял описание функции ASSetPropFlags?
буду очень тебе признательна :)
мое мыло: lena@lissi.ru

Nox Noctis
13.11.2003, 13:04
Кстати, уважаемый Nox, странно, что вы используете проклятье... я раздавлен :)))
эхх... гореть мне в геене огненной... :))
Ее четвертый парамаетр - это не булеан
цитирую с флэш-риппер.ком:
Четвертый аргумент allowFalse — это булеан (true/false)
это смутило мой неокрепший разум :)))

зы: на душе полегчало ? :))

2mishinaelle
на английском тут: flashcoders-wiki (http://chattyfig.figleaf.com/flashcoders-wiki/index.php?ASSetPropFlags)
на русском тут: flash-ripper.com (http://flash-ripper.com/articles/flash/2002_08_13_asspropflags.htm)

Dagi
13.11.2003, 19:21
Приведенная мною информация абсолютно достоверна. Просто на www.flash-ripper.com неверное описание четвертого параметра. А вот на другом из приведенных вами сайтов имеется информация более достоверная. Убедиться же в ее достоверности очень просто, попытавшись установить для свойства все атрибуты в false.
p.s. Источник приведенной документации - это я сам - поэтому ссылку давать некуда:)

Dagi
13.11.2003, 19:28
http://chattyfig.figleaf.com/flashcoders-wiki/index.php?ASSetPropFlags - вот здесь описание совпадает с моим. Если бы уважаемый Nox читал его, то в качестве четвертого параметра он true бы не применял:)

Nox Noctis
13.11.2003, 19:38
можно ехидничать скока угодно - но я-то ошибся потому что не тем описанием воспользовался (я его читал еще в английской версиии на FlashGuru.com, до того как его на флэш-риппера выложили) а вот Вы, сударь, прекратите маскироваться :))

знаешь что мне наша беседа очень напоминает ?

даниил хармс - "десять примеров того как неожиданное предположение огорошивает человека к нему не подготовленного" :))

рекомендую :))

Dagi
13.11.2003, 19:54
Я ошибся - и вы ошиблись. Теперь мы квиты - и ругаться незачем. А что вы имели ввиду под тем, что я маскируюсь?