PDA

Просмотр полной версии : Как поменять курсор


Arhitector
13.02.2006, 19:25
Как поменять курсор мыши на свой нарисованный?
Я полазил по форуму и нашел, только один пример...

Где нужно на новый курсор вешать вот этот вот скрипт

onClipEvent (load) {
Mouse.hide();
this.startDrag(1);
}
onClipEvent (enterFrame) {
this._x = _root._xmouse;
this._y = _root._ymouse;
}


но при нажатии правой кнопки мыши, стандартная мышь появляется поверх нарисованный... помогите плиззз...

Fl00r
13.02.2006, 19:30
кто это тебе такой код дал? =) смешной он
В хелпе эта функция приведена.

[G@ng$t@]Un1t
13.02.2006, 19:34
Я делаю так хотя можно делать по разному:
onClipEvent(enterFrame){
Mouse.hide();
_x = _root._xmouse;
_y = _root._ymouse;
}

[G@ng$t@]Un1t
13.02.2006, 19:39
Упс-"Mouse.hide();" надо по загрузке клипа или вобше на кадре. :rolleyes:

Double
13.02.2006, 22:26
onEnterFrame можно вешать только в том случае, когда замененым курсором надо что-то драгать. Иначе, для "подменки" курсора надо делать startDrag...
относительно правой кнопки мыши: можно недоумевать почему выводится инфа о какой-то никому неизвестной компании, а не о Создателе ролика.

olegn
13.02.2006, 22:52
Mouse.hide();
_root.onMouseMove=function(){
customCursor_mc._x=_xmouse;
customCursor_mc._x=_ymouse;
updateAfterEvent();
}Здесь предполагается, что _root.onMouseMove больше нигде не задействовано.

(o)ne
16.03.2006, 22:43
а подскажите, пожалуйста, как нужный мувик из библиотеки сделать customCursor_mc? а то указатель-то прячется, а нужный не показывается.

AxelRB
17.03.2006, 08:33
Поставь его на сцену, обзови customCursor_mc :)

PIRIS
17.03.2006, 09:34
Точно сработает. Слушай меня, проверенно!
код ставиться на обьект преставляющий курсор.

onClipEvent(load){
startDrag(this, true);
Mouse.hide();
}
onClipEvent(mouseMove){
updateAfterEvent();
}

(o)ne
17.03.2006, 12:14
AlexRB, PIRIS - спасибо! :) все заработало. Оставил последний вариант :)

(o)ne
17.03.2006, 13:20
А такой еще вопрос - сложно ли сделать, чтобы при наведении на опр. облать курсор менял цвет?

PIRIS
17.03.2006, 14:24
цвет менялся плавно или резко?

(o)ne
17.03.2006, 14:43
да можно и резко, а можно и плавно :)

как вариант - чтобы картинка указателя заменялась на картинку светящегося указателя, кадров за 5

PIRIS
17.03.2006, 16:10
в мувик, где находиться изображение твоего курсора, нужно приготовить соответсвующий переход - с обычного курсора, на светящуюся. В первом и последнем кадрах этого мувика (курсора) пишем stop();
Преположим определенная область это у нас тоже MovieClip, т.е.

onClipEvent(mouseMove){
myPointer.play();
}

Homo Sapiens
17.03.2006, 16:33
Дурацкий вариант. Обработчики событий onClipEvent, код на клипах не стоит так делать

//На _root в первом кадре, наверху
//"cursor" - имя клипа, который и будет курсором
var init:Object = {_x:_root._xmouse, _y:_root._ymouse};
var cursor:MovieClip = _root.attachMovie("cursor", "cursor", 999999, init);
cursor.startDrag(true);
Mouse.hide();

(o)ne
17.03.2006, 18:26
PIRIS - т.е. делаю я область в виду мувиКлипа и на него вешаю
"onClipEvent(mouseMove){
myPointer.play();
}"
заменив myPointer на имя моего мувика-указателя? что-то не получилось

Homo Sapiens - а как в таком варианте сделать замену курсора при наведении на опр. область?

Homo Sapiens
17.03.2006, 18:44
t.onRollOver = function():Void
{
cursor.gotoAndStop(2);
}

t.onRollOut = function():Void
{
cursor.gotoAndStop(1);
}
t - имя клипа, который является областью, при наведении на которую нужно менять курсор.

(o)ne
17.03.2006, 18:59
что-то не получается..если не трудно - помогите настроить (файл), там только мувик курсор и мувик-область...

__i
17.03.2006, 20:36
// 2006
// автор __i
// пока не сказали спасибо про себя использовать запрещено! %))
// юзаем это все дело так:
// в самом начале пишем - new MyCursor(cursorName);
// где cursorName или имя уже существующего мувика на сцене,
// или имя в библиотек, этот вариант лучше.
// потом для клипов на которые должен реагировать
// курсор пишем mc.registerCursor();
/* Типа пример
var mc = _root.createEmptyMovieClip('mc',_root.getNextHighestDepth());
mc.beginFill(0,100);
mc.lineTo(10,5)
mc.lineTo(5,10)
mc.lineTo(0,0)
mc.endFill()
new MyCursor(mc)


var mc = _root.createEmptyMovieClip('test',_root.getNextHighestDepth());
mc.beginFill(0x990000,100);
mc.lineTo(100,0)
mc.lineTo(100,100)
mc.lineTo(0,100)
mc.lineTo(0,100)
mc.endFill()
mc._x=100;
mc._y=100;
*/

class MyCursor {
var cur_mc:MovieClip;
var objects:Array;
var type;
function MyCursor(mc) {
this.objects = new Array();
_root.__CursorObj = this;
if (mc != undefined) {
if (typeof (mc) == 'movieclip') {
this.cur_mc = mc;
this.type = 'mc';
} else {
this.cur_mc = _root.attachMovie(mc, '__mycursor_mc', _root.getNextHighestDepth());
this.type = 'attach';
}
}
Mouse.hide();
this.cur_mc.owner = this;
this.setHandlers();
this.setNewMovieClipMethod();
}
function setHandlers() {
this.cur_mc.onMouseMove = function() {
if ((_root.getNextHighestDepth()-1)>this.getDepth()) {
this.swapDepths(_root.getNextHighestDepth());
}
//всегда выше всех
trace(this.getDepth());
this._x = _root._xmouse;
this._y = _root._ymouse;
trace(this.owner.objects.length);
if (this.owner.objects.length>0) {
var flag = false;
for (var i = 0; i<this.owner.objects.length; i++) {
if (this.owner.objects[i].hitTest(this._x,this._y,true)) {
flag = true;
}
this.changeColor(flag);
}
}
updateAfterEvent();
//и тут ваша машина умрет %));
};
this.cur_mc.changeColor = function(who) {
if (who) {
new Color(this).setRGB(0x00ff00);
//сдесь напиши то что будет
//происходить с твоим курсором
//при пересечении с нужным объектом,
//допустим gotoAndStop(2)
} else {
//Здесь напиши то что будет
//происходить с твоим курсором
//в обычном состоянии,
//допустим gotoAndStop(2)

new Color(this).setRGB(0xffff00);
}
};
}
function setNewMovieClipMethod() {
MovieClip.prototype.registerCursor = function() {
_root.__CursorObj.addObj(this);
};
MovieClip.prototype.unRegisterCursor = function() {
_root.__CursorObj.deleteObj(this);
};
}
function addObj(mc) {
trace(mc);
this.objects.push(mc);
}
function deleteObj(mc) {
for (var i in this.objects) {
if (this.objects[i] == mc) {
this.objects.splice(i, 1);
this.cur_mc.changeColor(false);
return;
}
}
}
}


ну это типа как вариант, и даже не самый идеальный.

а ну и еще забыл сказать - все это кладем рядом с с проектом в файле MyCursor.as

(o)ne
17.03.2006, 20:57
да, интересный вариант :) спасибо

PIRIS
18.03.2006, 10:17
Держи! Брат. И кто то говорил про мой дурацкий вариант, по моему он сам одурел.

Но вместо курсора не надо вставлять jpg, лучше будет если курсор сам нарисуешь во флеше.

Держи файл.

(o)ne
18.03.2006, 11:37
Супер! Спасибо, дружище, меня лично твой вариант устраивает на 100%, а курсор тут просто тестовый, на самом деле другой будет :) как раз сейчас его перерисовываю.