Просмотр полной версии : люди просвятите меня беднягу:(
вот типа у меня появляются мувы с разными параметрами... код в первом и единственном кадре..все работает:)
_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;
}
};
Ну и набородил же ты. В первом примере невероятная смесь кода Flash MX с Flash 5. Второй абсолютно неверен. eval - это глобальная функция. ЕЕ нельзя вызывать как метод. Советую перед тем, как что-то писать, прочитать книжку. Иначе и объяснять не имеет смысла.
Вернее, в первом смесь Flash MX и Flash 4. setProperty() уже давно не имеет смысла использовать
как раз, это пример(первый блок где сет пропоти) из книжки по Flash MX:))
если знаешь как сделать я бы с удовольствием узнал..... а книжка это не догма здесь в форуме намного больше знаний....:)
может мне кто-нибудь помочь?
mishinaelle
10.11.2003, 12:53
вот исходник с тем что тебе нужно. если непонятно - пиши в аську
Nox Noctis
10.11.2003, 13:08
Оригинал написал(а) Dagi
eval - это глобальная функция. ЕЕ нельзя вызывать как метод. Советую перед тем, как что-то писать, прочитать книжку. Иначе и объяснять не имеет смысла.
вообще-то, евал - это НЕ функция :)
ну и не метод, этода, что есть то есть... :))
евал для виртуальной машины флэша - это макрос
зы:
да, и при желании можно ведь определить
_root.eval = function () { .... }
mishinael :вы мне swf выложили, и там происходит просто изменение размеров прямоугольника....:( можно посмотреть fla....может я не так объяснил: хотел узнать как дублировать определенное количество мувов типа в цикле....до какого то определенного количества.....и чтоб каждый экземпляр двигался с разной скоростью и с разной траекторией НО по параболе ...
по отдельности я представляю как это сделать НО вот как сделать вместе что где писать....т.е. где писать код для движения по параболе....где писать код дублирования мувов....в кадре все ИЛИ часть в кадре а часть в в муве который будет дублироваться...я знаю что это стандартно как то решается Но вот как?:(.... примного благодарен:)
Nox: я с вами согласен....хе хе по поводу eval....
кстати любезнейший Dagi....такие уважаемые люди как Денис Грибов без зазрения совести используют setProperty() ... я уверен что решить эту задачу можно многими способами...вплоть до рисования мувов которые двигаются по Гуид ... и только изменять их размер:)) ... так что Регардсы..
P.S. а ссылаться на книжку....типа нет времени на вас ламеры....и не подсказав ничего самому я считаю верх не профессионализма:) ... тем более это форум где люди задают вопросы а другие отвечают - обмен опытом...без обид я высказал свое мнение
mishinaelle
10.11.2003, 20:03
2 Fapser: сорри, не то зазиповала :) конечно хотела дать тебе fla-файл. вот, бери :)
Спасибо
то есть я понял так что сначала выполняется блок:_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 -
может достаточно одного цикла, который все создаст в одном кадре ? :)
и еще вопросик :) почему ты не меняешь координату _y напрямую а через переменную у?
вот с помощью одной замечательной девушки (mishanielle)получилось см. прикрепленный файл...НО .. как сделать чтоб мувы летели по РАЗНЫМ траекториям-половинкам парабол?
вот с помощью одной замечательной девушки (mishanielle) получилось см. прикрепленный файл...НО .. как сделать чтоб мувы летели по РАЗНЫМ траекториям-половинкам парабол?
:))))))) вот файл....парюсь уже
Так. Кто-то опять попытался меня засрать, не разобравштсь:)
Под глобальной функцией понимается функция, входящая в цепочку областей видимости (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'
люди я конечно понимаю что очень важно выяснить кто прав....но....может вы мне поможите? я там исходник скинул
я правильно понимаю...что для того что бы сделать чтобы:) каждый мув двигался по своей траектории из одной и тойже точки надо чтобы траектория его движения просчитывалась в нем самом...т.е. вытащить его из библиотеки на сцену...и записать в нем код просчета траектории и код движения....а в MainMovie....(который я повернул) прописать сколько их появляется, размеры их, прозрачность....так...или я опять путаю?
Дело в том, что в ActionScript eval() - это лишь намек на eval()
ECMAScript(). По идее, она должна переводить строки в исполнимый код - но в ActionScript этого по вполне очевтдным причинам этого не происходит.
В ECMA-262 (в соответсвии которому ActionScript) eval() явно прописана как метод объекта Global. Так что в данном случае моя ошибка - результат несоответсвия стандарту самого языка.
Nox Noctis
13.11.2003, 00:41
Оригинал написал(а) Dagi
моя ошибка - результатээ... а вот с ЭТИМ как раз никто и не спорил :))
но фраза насчет засрать не разобравшись - мне понравилась :)
все, харош бороздить космическими кораблями просторы большого театра... пиво греется :)))
Кстати, уважаемый 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 не является обязательным для задания.
ты не с 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)
Приведенная мною информация абсолютно достоверна. Просто на www.flash-ripper.com неверное описание четвертого параметра. А вот на другом из приведенных вами сайтов имеется информация более достоверная. Убедиться же в ее достоверности очень просто, попытавшись установить для свойства все атрибуты в false.
p.s. Источник приведенной документации - это я сам - поэтому ссылку давать некуда:)
http://chattyfig.figleaf.com/flashcoders-wiki/index.php?ASSetPropFlags - вот здесь описание совпадает с моим. Если бы уважаемый Nox читал его, то в качестве четвертого параметра он true бы не применял:)
Nox Noctis
13.11.2003, 19:38
можно ехидничать скока угодно - но я-то ошибся потому что не тем описанием воспользовался (я его читал еще в английской версиии на FlashGuru.com, до того как его на флэш-риппера выложили) а вот Вы, сударь, прекратите маскироваться :))
знаешь что мне наша беседа очень напоминает ?
даниил хармс - "десять примеров того как неожиданное предположение огорошивает человека к нему не подготовленного" :))
рекомендую :))
Я ошибся - и вы ошиблись. Теперь мы квиты - и ругаться незачем. А что вы имели ввиду под тем, что я маскируюсь?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.