![]() |
Makromedia Direktor
Кто мне мог бы обяснить некоторые аспекты связаные со скриптами.
Меня интересует один скрипт, мне надо что бы мне обьяснили непонятные строки в нем. |
Re: Makromedia Direktor
Если я не путаю Macromedia Director, это только редактор, а на чем скрипты?
кинь в личку... |
Re: Makromedia Direktor
Майк, скрипты на внутреннем языке, но очень похожем на С++, а я не втом не в другом не понимаю, хотя в общем програмировании да.
Могу вывесить здесь этот скрипт. |
Re: Makromedia Direktor
я тоже в C мало что смыслю, но ты вывеси, если он не очень здоровый, думаю кто-нибудь поможет...
|
Re: Makromedia Direktor
Майк, помоему ты путаешь насчет редактора. Это скорее всего среда разработки (типа Флеша) со встроенным языком сценариев...
Цитата:
|
Re: Makromedia Direktor
global SysBlock_Flag, CPU_Flag, xq, VideoPlata_Flag, Monitor_Flag, EnterFrame_Flag, yq, CpuCool_Flag, CD_Cover_Flag, Pow_Button_Flag, CD_Play_Flag, SoundPlata, Kolonki_Flag, musicS
on beginSprite me member("Comp").resetWorld() member("Comp").model("CpuCool").addChild(member("C omp").model("CpuVentilator")) Kolonki_Flag = 1 SoundPlata = 1 CD_Play_Flag = 1 Pow_Button_Flag = 1 CD_Cover_Flag = 1 CpuCool_Flag = 1 SysBlock_Flag = 1 CPU_Flag = 1 VideoPlata_Flag = 1 Monitor_Flag = 1 EnterFrame_Flag = 1 yq = 0 -- просто счетчик xq = member("Comp").camera("DefaultView").fieldOfView -- Ставим на паузу анимацию объектов. -- К тем объектам которые анимированы костями добавляем -- модификатор bonesPlayer иначе анимацией будет невозможно управлять. member("Comp").model("VideoPlata").keyframePlayer. pause() member("Comp").model("CPU").keyframePlayer.pause() member("Comp").model("CpuCool").keyframePlayer.pau se() member("Comp").model("Power_Button").keyframePlaye r.pause() member("Comp").model("MonProvod").addModifier(#bon esPlayer) member("Comp").model("MonProvod").bonesPlayer.paus e() member("Comp").model("CD_Disk").keyframePlayer.pau se() member("Comp").model("SoundPlata").keyframePlayer. pause() member("Comp").model("SoundProvod").addModifier(#b onesPlayer) member("Comp").model("SoundProvod").bonesPlayer.pa use() member("Comp").model("CpuVentilator").keyframePlay er.pause() end on mouseUp mouseTarget = the mouseLoc - point(sprite(2).left, sprite(2).top) if sprite(2).camera.modelUnderLoc(mouseTarget) = member("Comp").model("SysBlock_Cover") then -- открываем и закрываем корпус включая анимацию с нужного нам кадра if SysBlock_Flag =1 then member("Comp").model("SysBlock_Cover").keyframePla yer.play("SysBlock_Cover-Key",0,0,333,1) SysBlock_Flag = 2 else put "close" member("Comp").model("SysBlock_Cover").keyframePla yer.play("SysBlock_Cover-Key",0,333,666,1) SysBlock_Flag =1 end if end if -- myKeyPress end on enterFrame me myKeyPress end on myKeyPress --поворот слева if keyPressed("z") then member("Comp").model("CamDummy").rotate(0,0,2) end if --поворот справа if keyPressed("c") then member("Comp").model("CamDummy").rotate(0,0,-2) end if -- наезд камерой if keyPressed("d") then if xq>10 then xq=xq-1 member("Comp").camera("DefaultView").fieldOfView = xq end if end if -- отъезд камерой if keyPressed("x") then if xq<50 then xq=xq+1 member("Comp").camera("DefaultView").fieldOfView = xq end if end if -- ресет камеры if keyPressed("r") then xq=45 member("Comp").camera("DefaultView").fieldOfView = xq end if if keyPressed("p") then go to 0 end if updateStage() end |
Re: Makromedia Direktor
Что то он большой получился....... :(
Ну вот вообщем то.... ассобенно то что выделено красным! |
Re: Makromedia Direktor
я так опнимаю это для написания скриптовых оболочек типа Demo Shield, по поводу скрипта, выделенной части, не вникая в детали, могу попробовать немного пояснить...
...если анализируя очень поверхностно, то в том что помеченно красным выполняется условие и присваиваний информации к семейству объектов. Условие построено на основе переключения. И при его выполнении инвертирует содержимое флага. т.е. если содержимое переменной SysBlock_Flag = 1 выполняется первое условие (if SysBlock_Flag =1 then), происходит присванивание к семейству объектов member("Comp"), ключу "SysBlock_Cover-Key" значение "0,0,333,1" а затем происходит переключение SysBlock_Flag в значение 2, и выход из условия, при следующем проходе этого условия, условие не совпадет, и тогда выполнятся комманды, стоящие пеосле оператора else, и так же перейдет переключение во SysBlock_Flag = 1 (т.е. то самое инвертирование о котором я говорил). |
Re: Makromedia Direktor
А я думал ты в ОО программировании шаришь...
Цитата:
Итак, исходная строка: member("Comp").model("SysBlock_Cover").keyframePla yer.play("SysBlock_Cover-Key",0,0,333,1) здесь вызывается метод play объекта member("Comp").model("SysBlock_Cover").keyframePla yer которому передаются параметры "SysBlock_Cover-Key",0,0,333,1 (целых 5 штук, один стринговый и четыре числовых) А вообще в комментах там написано, что там в реале происходит: -- открываем и закрываем корпус включая анимацию с нужного нам кадра Цитата:
|
Re: Makromedia Direktor
Цитата:
Скорее больше на VB. |
Re: Makromedia Direktor
Скажу даже больше, красным цветом выделена банальная проверка состояний. Причем так делают только начинающие кодеры (т.к. это самый тривиальный способ) и законченые профессионалы (только все отличие у них - они использут для флагов состояния true и false).
По правильному былобы проверять состояние объекта и после этого решать что с ним делать. (Вариант с флагами плох тем, что со временем он может разростись, при этом будет кушаться до фига памяти.... :) ) Общий смысл выделенного куска - когда дверь закрыта, то при наведении мышки мы ее откроем, а когда закрыта - то наоборот. Анализируя дальше скажу, что проигрывание открытия идет с 0 по 333 кадр сцены этой двери (которая судя по всему зовется SysBlock_Cover-Key), а закрытие с 333 по 666. Осталось выяснить только зачем нужны параметры 2 и 5 функции play. 8) |
Re: Makromedia Direktor
Блиииин Люди да вы просто гениииииии!!!!!!!!!!!!!!!!!!!
Ни фигасе!!! По коду узнать что там происходит!!!!! Вот это да! (упал ниц, перед вами и начал молиться) :D :D Вообщем: Это сцена сделаная в 3д максе, в ней стол на нем комп с монитором, рядом лежат проц, кулер, вентилятор, звукавуха, видюха, СД диск, колонки со шнуром. Каждый предмет анимирован, тоесть бонально встает в системный блок. Эта сцена сохранена в Shockwave 3D scene (W3D) и импортирована в Директор. Я её взял за основу к своему проекту, но для того чтобы мне понять что и как, мне надо знать почему здесь именно так а не иначе (надобыло в универе учить програмирование) Например у меня вопрос: global SysBlock_Flag, CPU_Flag, xq, VideoPlata_Flag, Monitor_Flag, EnterFrame_Flag, yq, CpuCool_Flag, CD_Cover_Flag, Pow_Button_Flag, CD_Play_Flag, SoundPlata, Kolonki_Flag, musicS Зачем всем обьектам присвоено глобальная...... что? Переменная? Вот здесь все понятно: ---поворот слева if keyPressed("z")then ---- если нажать "z" то member("Comp").model("CamDummy").rotate(0,0,2) --- сцена "сomp" и модель "CamDummy" будет поворачиваться на 2 градуса по оси Z end if ---- конец иначе А вот здесь еще используется счетчик для чего? -- наезд камерой if keyPressed("d") then if xq>10 then xq=xq-1 member("Comp").camera("DefaultView").fieldOfView = xq end if end if |
Re: Makromedia Direktor
Цитата:
Ну и там сказано что он очень похож на С++ и тем кто на С++ умеет , изучить внутренний язык Директора не составит труда! |
Re: Makromedia Direktor
Цитата:
Цитата:
|
Re: Makromedia Direktor
Про наезд все понятно!!!!!!!!! Спасибо!!!! Блин как все просто.....
А про флаги: Там флаг меняется на 2 и используется else для того что бы его закрыть. Тоже понятно, по тому что вот сдесь: -- устанавливаем видеоплату if sprite(2).camera.modelUnderLoc(mouseTarget) = member("Comp").model("VideoPlata") then if SysBlock_Flag = 2 then member("Comp").model("VideoPlata").keyframePlayer. play() VideoPlata_Flag = 2 end if end if Нету строки с использованием еlse и значит видюху больше не вынуть!!!! |
Re: Makromedia Direktor
А вот это что за строка?
on mouseUp mouseTarget = the mouseLoc - point(sprite(2).left, sprite(2).top) я так понял что это захват мышкой, а что такое sprite? if sprite(2).camera.modelUnderLoc(mouseTarget) = member("Comp").model("SysBlock_Cover") then |
Re: Makromedia Direktor
Цитата:
Посмотри на код выше что ты давал. Здесь идет обработка следующего характера: Если системник открыт (SysBlock_Flag) то анимируем видяху, и естанавливаем флаг VideoPlata_Flag в состояние, что видяха воткнута. Соответсвенно где-то дальше должна быть обратная хреновина :) Цитата:
Работу алгоритмаов рассказать я могу, а вот чтоб сказать что каждай объект значит - надо в маны лезть смотреть..... А тут делается следующее - обрабатывается событие на движение мыши, и смотрится, в данном случае, если курсор на оболочкой системника то будем делать...... |
Re: Makromedia Direktor
Цитата:
Цитата:
Димун могу прислать исходники.... ну так для интересу.... если хочешь! Спасибо! Если что еще обраащусь к вам! |
Re: Makromedia Direktor
Во, ДИмун все проанализировал уже и раскатал. Респект!
С флагами конечно не совсем так все обстоит, но это не важно ;) |
Re: Makromedia Direktor
Димуныч рулит, когда не ленится,
Так что обращайтесь, Вячеслав :) |
Re: Makromedia Direktor
Димо МОЗГ тока я все равно нифига не понел)) потому что
даже никасался,а вот читал с интересом весь топ |
Часовой пояс GMT +4, время: 02:30. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot