Javascript 图像根据鼠标的位置而变化

Javascript 图像根据鼠标的位置而变化,javascript,jquery,mouseevent,jquery-events,mousemove,Javascript,Jquery,Mouseevent,Jquery Events,Mousemove,如何根据鼠标位置实现图像更改:左、左上、右上、右下、右下、左下和单击 下面是我正在尝试做的一个例子: 我尝试过在Stack Overflow上找到一个类似的主题,但我似乎无法让左、右、上和下正常工作: 这是我一直在使用的代码 通过查看他的js文件,您可以看到他是如何做到这一点的。他有一个名为site.faces.js的js文件 $.extend(Site, { Faces: { /* Attributes */ center: {

如何根据鼠标位置实现图像更改:左、左上、右上、右下、右下、左下和单击

下面是我正在尝试做的一个例子:

我尝试过在Stack Overflow上找到一个类似的主题,但我似乎无法让左、右、上和下正常工作:

这是我一直在使用的代码


通过查看他的js文件,您可以看到他是如何做到这一点的。他有一个名为site.faces.js的js文件

$.extend(Site, {
    Faces: {

        /* Attributes */

        center: {
            'left': 0,
            'top': 0
        },
        config: {
            'persons': ['eric', 'fabian', 'lievin', 'nicolas', 'pascale', 'fred'],
            'nbpositions': 8 
        },
        currentImage: null,


        /* Methods */

        angle: function (cursor) {
            var angle =  Math.atan2(0-cursor.y,0-cursor.x)*(180 / Math.PI);
            if(angle < 0) { angle += 360;}
            return angle;
        },


        distance: function(cursor) { 
            return Math.sqrt( Math.pow((0 - cursor.y),2) + Math.pow((0 - cursor.x),2) ); 
        },


        setCenterFace: function() {
            Site.Faces.center = $("#face").offset();
            if (parseInt($('#face').css('padding-top'))==0) {
                Site.Faces.center.left += 720/2;
                Site.Faces.center.top += 480/2;
            } else {
                Site.Faces.center.left += $("#face").width()/2;
                Site.Faces.center.top += parseInt($('#face').css('padding-top'))/2;
            }
        },


        init: function(config) {
            if (typeof config!='undefined') {
                $.extend(this.config, config);
            }
            if (typeof this.config.person=='undefined') {
                 this.config.person = this.config.persons[Math.floor(Math.random()*this.config.persons.length)];
            }
            /* 
                To force a face, use this...
                this.config['person'] = 'fabian';
            */
            $('#face').addClass('face-'+this.config['person']);
            if ($('html').hasClass('touch')) { 
                $('#face').css({
                    'background-image': 'url('+Shin.href(';img/site/faces/'+this.config['person']+'.jpg')+')'
                });
                $('.face-'+this.config['person']).fadeIn();
                $(window).resize(function(){
                    var bgPositionX = '0px';
                    if ($('#face').css('padding-top')!='0px') {
                        bgPositionX = "center";
                    }
                    $('#face').css('background-position', bgPositionX+' 0px');
                });
                $(window).resize();
            } else {
                $(window).resize(function(){
                    Site.Faces.setCenterFace();
                    Site.Faces.showImage(9);
                });
                Site.Faces.preloadImage(Shin.href(';img/site/faces/'+this.config['person']+'_mixed.jpg'), function() {
                    $(window).resize();
                    var offset = null;
                    var cursor = {
                        x: 0,
                        y: 0
                    };
                    $('body').mousemove(function(e) {
                        cursor.x = (e.pageX - Site.Faces.center.left);
                        cursor.y = (e.pageY - Site.Faces.center.top);
                        Site.Faces.manageImage(cursor, 'mousemove');
                    });
                    $('a, #face').bind('mousedown',function() {
                        Site.Faces.showImage(10)
                    });
                });
            }
        },


        manageImage: function(cursor, event) {
            if (event == 'mousemove') {
                var centerDistance = 100
                if ($('#face').css('padding-top')!='0px') { 
                    centerDistance = 50
                }
                if (this.distance(cursor)<centerDistance) { 
                    if(Site.Faces.currentImage != 9 && Site.Faces.currentImage != 10) {
                        Site.Faces.showImage(9);
                    }
                } else {
                    var angleByPosition = 360/this.config['nbpositions'];
                    var numImage = Math.ceil(( this.angle(cursor) + (angleByPosition/2))/angleByPosition);
                    numImage = (numImage>this.config['nbpositions'])?1:numImage;
                    if (Site.Faces.currentImage != numImage) {
                        Site.Faces.showImage(numImage);                     
                    }
                }
            }
        },


        preloadImage: function(src, callback) {
            var img = new Image();
            img.src = src;
            img.onload = function () {
                $('#face').css('background-image','url('+src+')');
                $('.face-'+Site.Faces.config['person']).fadeIn();
                if (typeof callback=="function") callback();
            };
        },


        showImage: function(num) {
            Site.Faces.currentImage = num;
            var height = (480*(10-num));
            var bgPositionX = '0px';
            if ($('#face').css('padding-top')!='0px') {
                height = (200*(10-num));
                bgPositionX = "center";
            }
            $('#face').css({
                backgroundPosition: bgPositionX+' -'+height+'px'
            });
        }

    }
});
$.extend(站点、{
面孔:{
/*属性*/
中心:{
“左”:0,
“顶部”:0
},
配置:{
“人”:[“埃里克”、“费边”、“利文”、“尼古拉斯”、“帕斯卡尔”、“弗雷德”],
“nbpositions”:8
},
currentImage:null,
/*方法*/
角度:函数(光标){
变量角度=数学atan2(0-cursor.y,0-cursor.x)*(180/Math.PI);
如果(角度<0){angle+=360;}
返回角;
},
距离:函数(光标){
返回Math.sqrt(Math.pow((0-cursor.y),2)+Math.pow((0-cursor.x),2));
},
setCenterFace:函数(){
Site.Faces.center=$(“#face”).offset();
if(parseInt($('#face').css('padding-top'))==0){
Site.Faces.center.left+=720/2;
Site.Faces.center.top+=480/2;
}否则{
Site.Faces.center.left+=$(“#face”).width()/2;
Site.Faces.center.top+=parseInt($('#face').css('padding-top'))/2;
}
},
初始化:函数(配置){
如果(配置类型!=“未定义”){
$.extend(this.config,config);
}
if(typeof this.config.person=='undefined'){
this.config.person=this.config.persons[Math.floor(Math.random()*this.config.persons.length)];
}
/* 
要强制一张脸,请使用此。。。
this.config['person']='fabian';
*/
$('#face').addClass('face-'+this.config['person']);
if($('html').hasClass('touch')){
$(“#面”).css({
“背景图像”:“url('+Shin.href(';img/site/faces/'+this.config['person']+'.jpg')+”)”
});
$('.face-'+this.config['person']).fadeIn();
$(窗口)。调整大小(函数(){
变量bgPositionX='0px';
if($('#face').css('padding-top')!='0px'){
bgPositionX=“中心”;
}
$('#face').css('background-position',bgPositionX+'0px');
});
$(窗口).resize();
}否则{
$(窗口)。调整大小(函数(){
Site.Faces.setCenterFace();
网站。面孔。展示图片(9);
});
Site.Faces.preload图像(Shin.href('img/Site/Faces/'+this.config['person']+'u mixed.jpg'),函数(){
$(窗口).resize();
var offset=null;
变量游标={
x:0,,
y:0
};
$('body').mousemove(函数(e){
cursor.x=(e.pageX-Site.Faces.center.left);
cursor.y=(e.pageY-Site.Faces.center.top);
Site.Faces.manageImage(光标“mousemove”);
});
$('a,#face').bind('mousedown',function(){
Site.Faces.showImage(10)
});
});
}
},
manageImage:函数(光标、事件){
如果(事件=='mousemove'){
var中心距=100
if($('#face').css('padding-top')!='0px'){
中心距=50
}
if(this.distance(cursor)this.config['nbpositions'])?1:numImage;
if(Site.Faces.currentImage!=numImage){
Site.Faces.showImage(numImage);
}
}
}
},
预加载映像:函数(src,回调){
var img=新图像();
img.src=src;
img.onload=函数(){
$('#face').css('background-image','url('+src+'));
$('.face-'+Site.Faces.config['person']).fadeIn();
if(typeof callback==“function”)callback();
};
},
showImage:函数(num){
Site.Faces.currentImage=num;
变量高度=(480*(10个));
变量bgPositionX='0px';
if($('#face').css('padding-top')!='0px'){
高度=(200*(10个));
bgPositionX=“中心”;
}
$(“#面”).css({
背景位置:bgPositionX+'-'+高度+'px'
});
}
}
});

您尝试过什么?你的密码在哪里?什么工作不正常?嗨,这里我已经试过了,但还是没能让它工作。你不能只是插入他的代码,期待它工作。。。它应该给你一个如何工作的想法。是的,我知道我在寻找一个更简单的版本