Просмотр полной версии : Свой курсор
Нужно, что бы нарисованный мной курсор при
наведении на объект менял внешность.
В мувике 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: Для оформления своего кода, надо использовать теги ]
Мне кажется, сделано верно.
Но увы, курсор то меняется, то не меняется, по неизвестному
мне правилу.
Подскажите, как реализовать задачу.
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
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);
}
}
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();
Но курсор просто меняет свои две внешности.
Возможно ли поместить код в одну функцию и
грамотно применять ко всем объектам?
"Но курсор просто меняет свои две внешности"
2 внешноси?
Внешность наведённого курсора и не наведённого.
Mr. Fixit
30.01.2007, 02:39
obekt.onEnterFrame = tach();
ошибка... obekt.onEnterFrame = tach(); error-error
правильно... obekt.onEnterFrame = tach; gut-gut
так ровнее получится:
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);
Mr. Fixit
30.01.2007, 05:51
strela.onMouseMove = function() {
this._x = _root._xmouse;
this._y = _root._ymouse;
updateAfterEvent();
}
function abnormal(obj) {
if(obj.hitTest(obekt))
obj.gotoAndStop(2);
else
obj.gotoAndStop(1);
}
setInterval(abnormal, 50, strela);
Тримай ще, козаче:moder:
Небольшой апгрейт:
кошечка, собачка и барашек:
var arr:Array = new Array(murzik, bobik, bebeka);
murzik.frameToGo = 2;
bobik.frameToGo = 3;
bebeka.frameToGo = 4;
Mouse.hide ();
function checkHits():Void{
for (var i=0; i < arr.length; i++){
if( strela.mc.hitTest( arr[i] )){
strela.gotoAndStop( arr[i].frameToGo );
return;
}}
strela.gotoAndStop( 1 );
}
//code
strela.onMouseMove = function () {
this._x = _xmouse;
this._y = _ymouse;
checkHits();
updateAfterEvent ();
};
strela.onMouseMove();
обратите внимание, на стреле появился mc - область проверки пересечения.
Mr. Fixit
30.01.2007, 18:07
2Kikasso:
Хаха.. чувак +1 за юмор...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.