Форумы города Луги

Форумы города Луги (http://xn--80afx6a.xn--p1ai/index.php)
-   Софт (http://xn--80afx6a.xn--p1ai/forumdisplay.php?f=19)
-   -   Makromedia Direktor (http://xn--80afx6a.xn--p1ai/showthread.php?t=2007)

Di_Moon 03.04.2006 09:39

Re: Makromedia Direktor
 
Скажу даже больше, красным цветом выделена банальная проверка состояний. Причем так делают только начинающие кодеры (т.к. это самый тривиальный способ) и законченые профессионалы (только все отличие у них - они использут для флагов состояния true и false).

По правильному былобы проверять состояние объекта и после этого решать что с ним делать. (Вариант с флагами плох тем, что со временем он может разростись, при этом будет кушаться до фига памяти.... :) )

Общий смысл выделенного куска - когда дверь закрыта, то при наведении мышки мы ее откроем, а когда закрыта - то наоборот.

Анализируя дальше скажу, что проигрывание открытия идет с 0 по 333 кадр сцены этой двери (которая судя по всему зовется SysBlock_Cover-Key), а закрытие с 333 по 666.

Осталось выяснить только зачем нужны параметры 2 и 5 функции play. 8)

ELEKTRIC 03.04.2006 12:44

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


ELEKTRIC 03.04.2006 12:49

Re: Makromedia Direktor
 
Цитата:

Сообщение от TYSON
Цитата:

Сообщение от ELEKTRIC
скрипты на внутреннем языке, но очень похожем на С++,

Славка, этот язык по синтаксису вообще не похож на С++.
Скорее больше на VB.

Я просто скачал учебник по Директору, думал что там про скриптинг подробно будет, а там так очень поверхостно!
Ну и там сказано что он очень похож на С++ и тем кто на С++ умеет , изучить внутренний язык Директора не составит труда!

Di_Moon 03.04.2006 12:56

Re: Makromedia Direktor
 
Цитата:

Сообщение от ELEKTRIC
Например у меня вопрос:
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
Зачем всем обьектам присвоено глобальная...... что? Переменная?

Не совсем.... Все что имеет в своем названии flag просто напрасто является флагами состояний (как с дверцой, например. Ну и плюс так рекомендует венгерская нотация :)) в global они определены чтобы у них было одно и тоже значение во всем коде (например чтоб эти флаги не передевать в качестве параметров к функциям, и не яб...ся потом с их сменой....)

Цитата:

Сообщение от ELEKTRIC
А вот здесь еще используется счетчик для чего?

-- наезд камерой
if keyPressed("d") then
if xq>10 then
xq=xq-1
member("Comp").camera("DefaultView").fieldOfView = xq
end if
end if

Ну тоже все просто... в xq 99% хранится текущее растояние от объекта до камеры. И данным счетчиком получается плавный наезд и камера должная остановится хогда xq будет равно 10. (т.е. блокируют чтоб камера в объект не въехала)

ELEKTRIC 03.04.2006 13:16

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 и значит видюху больше не вынуть!!!!

ELEKTRIC 03.04.2006 13:18

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

Di_Moon 03.04.2006 13:30

Re: Makromedia Direktor
 
Цитата:

Сообщение от ELEKTRIC
А про флаги:
Там флаг меняется на 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 и значит видюху больше не вынуть!!!!

А тут немного другое...
Посмотри на код выше что ты давал. Здесь идет обработка следующего характера: Если системник открыт (SysBlock_Flag) то анимируем видяху, и естанавливаем флаг VideoPlata_Flag в состояние, что видяха воткнута. Соответсвенно где-то дальше должна быть обратная хреновина :)

Цитата:

А вот это что за строка?
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
sprite скорее всего какой-то общий объект, - надо справку смотреть ;)
Работу алгоритмаов рассказать я могу, а вот чтоб сказать что каждай объект значит - надо в маны лезть смотреть.....

А тут делается следующее - обрабатывается событие на движение мыши, и смотрится, в данном случае, если курсор на оболочкой системника то будем делать......

ELEKTRIC 03.04.2006 13:39

Re: Makromedia Direktor
 
Цитата:

Сообщение от Di_Moon
Соответсвенно где-то дальше должна быть обратная хреновина :)

нет нету, да видно и не нужно ему было. Но главное понятно!!!!

Цитата:

А тут делается следующее - обрабатывается событие на движение мыши, и смотрится, в данном случае, если курсор на оболочкой системника то будем делать......
Ага! Понял тоесть из обьекта какбы вынута зона в которой действует курсор мыши!!!! Понял! А я то думаю..... ну теперь все понятно!

Димун могу прислать исходники.... ну так для интересу.... если хочешь!

Спасибо! Если что еще обраащусь к вам!

TYSON 03.04.2006 13:50

Re: Makromedia Direktor
 
Во, ДИмун все проанализировал уже и раскатал. Респект!
С флагами конечно не совсем так все обстоит, но это не важно ;)

Mike 03.04.2006 20:23

Re: Makromedia Direktor
 
Димуныч рулит, когда не ленится,
Так что обращайтесь, Вячеслав :)


Часовой пояс GMT +4, время: 02:00.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot