forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Анимация (и еще пару вопросов) (http://forum.boolean.name/showthread.php?t=4012)

Maestro 25.08.2007 13:17

Re: Анимация (и еще пару вопросов)
 
Как можно узнать координаты курсора относительно центра координат?

H@NON 25.08.2007 14:10

Re: Анимация (и еще пару вопросов)
 
Узнаем разрешение экрана, делим его попалам. Это будет наш центр. Эсли координаты мыши больше , чем пол-экрана, то отнимаем из них пол-экрана. Если координаты меньше чем пол-экрана, то тоже отнимаем.
graphwidthmid = graphicswidth()*0.5
graphheightmid = graphicsheight()*0.5

mx# = mousex()
my# = mousey()

dmx# = mx# - graphwidthmid
dmy# = my# - graphheightmid

Только зачем тебе это? ведь есть MouseXspeed() и mouseYspeed().

Maestro 25.08.2007 14:18

Re: Анимация (и еще пару вопросов)
 
эмм.. спасибо. уже сам сделал .))

ЗЫЖ ыы. только увидел твое сообщение.. проблема лежала немного дальше ,) но всеравно спасибо.

Maestro 29.08.2007 15:09

Re: Анимация (и еще пару вопросов)
 
Начал делать редактор... и появились проблемки. В некоторым момент (при выборе case'ов) перестают рисоваться image's без повторной инициолизации графики. Как буд-то ее ан-инициализировали... или как даже назвать незнаю. Может кто сталкивался с такой проблемой?

И еще. при повторной инициализации графики удаляются все загруженые объекты?

moka 29.08.2007 15:37

Re: Анимация (и еще пару вопросов)
 
Не удаляються. В блицмаксе да а тут нету авто отчистки.
Код нужно видеть :) Гдето просто ошибочку допустил.

Maestro 29.08.2007 16:05

Re: Анимация (и еще пару вопросов)
 
Moka, вот на счет очистки после повторной инициализации:
Код:

Game = 1
Global mouse

Repeat
Select game
Case 1
Graphics3D 800,600,32,Mode
SetBuffer BackBuffer()
    LoadMouse()
 Repeat
 Cls()
    DrawImage mouse,MouseX(),MouseY()
    If KeyHit(1) game = 2
 Flip
 Until game = 2

Case 2
Graphics3D 800,600,32,Mode
SetBuffer BackBuffer()
 Repeat
 Cls()
    DrawImage mouse,MouseX(),MouseY()
    If KeyHit(1) End
 Flip
 Until End

End Select
Forever

Function LoadMouse()
  Mouse=LoadImage("mouse.png")
End Function

Если после второго кейса убрать инициализацию, то все работает. А так говорит, что маус не найден...

moka 29.08.2007 16:25

Re: Анимация (и еще пару вопросов)
 
Maestro, дык у тебя Graphics3D 800,600,32,Mode и там и там. Поставь его вообще до выбора и использй только Один раз.

Maestro 29.08.2007 17:38

Re: Анимация (и еще пару вопросов)
 
Так это пример, к вопросу " И еще. при повторной инициализации графики удаляются все загруженые объекты?"

moka 29.08.2007 18:01

Re: Анимация (и еще пару вопросов)
 
Maestro, хм видимо да, или даже скорее не труться но линки теряються. А вообще странно. А ты не пробовал сделать так?:
Код:

If KeyHit(1)
  game = 2
  EndGraphics
EndIf


Maestro 29.08.2007 18:26

Re: Анимация (и еще пару вопросов)
 
MoKa, EndGraphics ничего не дает. Ну да ладно. Теперь буду знать где искать в таких случаях. Я и проблему решил свою... даже нашел как обойти, но для этого надо одну функцию модифицировать. Посмотрите плиз:

Код:

mx=MouseX(): my=MouseY()
MHit=MouseDown(1)
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImBtn),mx,my,1,1) Then
 If Sel <> n  Then
  PlaySound SelectBut
  Sel = n
 EndIf
  f=1
  y2=0
  If MHit=True Then
  If Sel2 <> n Then
    PlaySound ClickBut
    sou=1
    sel2 = n
  EndIf
    f=2
    y2=2
    Button(n)=1
  EndIf
Else
  f=0
  y2=0
EndIf
DrawImage ImBtn,x,y,f
Color 0,0,0
Text x+0.5*(ImageWidth(ImBtn)+4-Len(txt$)*FontHeight()*0.5),y+0.5*(ImageHeight(ImBtn)-4-FontHeight())+y2,txt$
End Function

Но тут при нажатии на кнопку она (кнопка) всевремя нажимается. Поэтому если при нажати кнопки должно произойти какое-то действие, оно происходит постоянно. Придвещаю первый ответ "Вместо MouseDown поставь MouseHit, и будет тебе счастье.", но если это сделать, то можно нажать только на первую! кнопку. Почему, я не совсем пойму, но это так.(

Maestro 29.08.2007 18:36

Re: Анимация (и еще пару вопросов)
 
Ага. чето поторопился я. Ничего я не исправил .( Если инициализировать графику, а потом Селект кейс... то при переходе ез кейса в кейс не выводится все, что должно выводиться ДравИмеджом. Текст, 3Д.. - это все есть, а имагов нету. А если в кейсе инициализировать графику, то все рисуется как надо.

moka 29.08.2007 18:42

Re: Анимация (и еще пару вопросов)
 
Код:

Game = 1
Global mouse
Graphics3D 800,600,32,Mode
SetBuffer BackBuffer()
LoadMouse()

Repeat
Select game
  Case 1
      Repeat
        Cls
        If KeyHit(57) game = 2
        DrawImage mouse,MouseX(),MouseY()
        Flip
      Until game = 2
  Case 2
      Repeat
        Cls
        If KeyHit(1) End
        DrawImage mouse,MouseX(),MouseY()
        Flip
      Forever
End Select

Function LoadMouse()
  Mouse=LoadImage("mouse.png")
End Function


johnk 29.08.2007 19:14

Re: Анимация (и еще пару вопросов)
 
Maestro, ты Flip Забыл :)

Maestro 29.08.2007 20:30

Re: Анимация (и еще пару вопросов)
 
JohnK, чего?

IGR 30.08.2007 15:04

Re: Анимация (и еще пару вопросов)
 
Flip - команда меняет передний и задний буферы !!
это для того что б на екране картинка была видна !!


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

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