Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Свой курсор (http://www.flasher.ru/forum/showthread.php?t=91179)

Zanha 26.01.2007 16:45

Свой курсор
 
Нужно, что бы нарисованный мной курсор при
наведении на объект менял внешность.
В мувике strela (в курсоре), два кадра,
для наведения и отведения.
Использую вот такой код:


Код:

strela.onEnterFrame = function()  {
        this._x = _xmouse;
        this._y = _ymouse;
}

obekt.onEnterFrame = function()  {
if(strela.hitTest(obekt)){
        strela.gotoAndPlay(2);
        }
obekt.onEnterFrame = function()  {
if(!(strela.hitTest(obekt)) ){
        strela.gotoAndPlay(1);
        }
}
}

[iNils: Для оформления своего кода, надо использовать теги [code][/code]]

Мне кажется, сделано верно.
Но увы, курсор то меняется, то не меняется, по неизвестному
мне правилу.
Подскажите, как реализовать задачу.

http://www.rapidshare.ru/155010

LeXi42006 26.01.2007 16:48

Везде gotoAndPlay меняем на gotoAndStop

LeXi42006 26.01.2007 16:54

И еще я бы посоветовал вместо hitTest использовать onRollOver и onRollOut.
Код:

strela.onEnterFrame = function() {
this._x = _xmouse;
this._y = _ymouse;
}
_root.obect.onRollOver = function() {
_root.strela.gotoAndStop(2)
}
_root.obect.onRollOut = function() {
_root.strela.gotoAndStop(1)
}
}

И короче, и работает правильней.

Tardos Mors 26.01.2007 18:19

Цитата:

Сообщение от Zanha
Код:

obekt.onEnterFrame = function()  {
if(strela.hitTest(obekt)){
        strela.gotoAndPlay(2);
        }
obekt.onEnterFrame = function()  {
if(!(strela.hitTest(obekt)) ){
        strela.gotoAndPlay(1);
        }
}
}


Ты два раза назначаешь onEnterFrame для одного и того же объекта. функция с именем onEnterFrame (да и с любым другим тоже) может быть только одна для каждого объекта.
И еще для понятности кода меняем hitTest(obekt) на hitTest(this)
Так что меняем этот кусок кода на:
Код:

obekt.onEnterFrame = function()
{
  if(strela.hitTest(this))
  {
    strela.gotoAndPlay(2);
  }
  else
  {
    strela.gotoAndPlay(1);
  }
}


Zanha 28.01.2007 22:38

Код:

obekt.onEnterFrame = function()
{
  if(strela.hitTest(this))
  {
    strela.gotoAndPlay(2);
  }
  else
  {
    strela.gotoAndPlay(1);
  }
}

отлично работает!
Но в проекте будут фигурировать несколько
объектов, изменяющих внешность курсора.
Хотелось бы сократить запись кода.

Ввожу
Код:

function tach ()
{
  if(strela.hitTest(this))
  {
    strela.gotoAndPlay(2);
  }
  else
  {
    strela.gotoAndPlay(1);
  }
}

obekt.onEnterFrame = tach();

Но курсор просто меняет свои две внешности.
Возможно ли поместить код в одну функцию и
грамотно применять ко всем объектам?

CorC 28.01.2007 23:15

"Но курсор просто меняет свои две внешности"
2 внешноси?

Zanha 29.01.2007 18:00

Внешность наведённого курсора и не наведённого.

Mr. Fixit 30.01.2007 02:39

Цитата:

Сообщение от Zanha
Код:

obekt.onEnterFrame = tach();

ошибка... obekt.onEnterFrame = tach(); error-error
правильно... obekt.onEnterFrame = tach; gut-gut

Kikasso 30.01.2007 03:12

так ровнее получится:
Код:

strela.onMouseMove = function() {
this._x = _xmouse;
this._y = _ymouse;
updateAfterEvent();
}
strela.onMouseMove();


Mr. Fixit 30.01.2007 05:25

Код:

strela.onMouseMove = function() {
this._x = _root._xmouse;
this._y = _root._ymouse;
updateAfterEvent();
}
function abnormal() {
if(obj.hitTest(obekt))
obj.gotoAndStop(2);
else
obj.gotoAndStop(1);
}
setInterval(abnormal, 50, strela);



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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.