Конечно, Вы. То, что отличается относительно наследования, - то, что при определении класса он наследуется частный другим классам/структурам. Если Вы определите структуру и получите ее из класса или структуры, то это будет общедоступное наследование по умолчанию:
// the following two are equivalent except that one time class is
// used and the other time struct
struct f : g { };
class f : public g { };
, Если Вы задаетесь вопросом, как необходимо перенести структуры C - я встроил бы их как участник в класс. Поскольку структуры C не были разработаны, чтобы быть наследованными от (не думайте ни защищенный ни виртуальный деструктор в структурах C - у них не может быть одного). Они - простые агрегаты, которые собирают данные. И помещение их как участники использует их как таковой (поскольку в "точке имеет пару x и координаты y").
структуры C также подвергают участников, которые возможно не должны быть подвергнуты в классе. Включение позволяет точное управление тем, что выставляется и что не получают/функции множества, и можно все еще позволить ему дать Вам копию или ссылку на содержавший явный объект структуры C.
Проблема появляется, если ваше окно прокручивается вниз, добавьте к странице несколько
s и прокрутите вниз на одну строку, и вы увидите ее.
Поэтому вместо того, чтобы проверять, <= 1 ли e.pageY, вычтите scrollTop:
if (e.pageY - $(window).scrollTop() <= 1)
{
// do something
}
Я использовал другую технику, работает почти во всех браузерах. Уловка заключается в использовании $ ("body")
или $ (window)
.
$ (window)
не работают для IE, но $ ( "body")
частично работает для FF, так как тело может не заполнять все окно.
Вот полный код страницы:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script><script>
var mouseX = 0;
var mouseY = 0;
var theFrame;
$(function() {
theFrame = $("body"); //$(window) for non-IE
theFrame.mousemove( function(e) {
//horizontal distance from edge
mouseX = Math.min(theFrame.width() - e.pageX, e.pageX);
//vertical distance from top
mouseY = e.pageY;
$("#mx").html(mouseX);
$("#my").html(mouseY);
});
theFrame.mouseout(function() {
if(mouseY<=mouseX)
$("#in_out").html("out-top");
else
$("#in_out").html("out");
});
theFrame.mouseover(function() {
$("#in_out").html("in");
});
});
</script>
</head>
<body>
<span id="in_out"></span>
<br />Hor: <span id="mx"></span>
<br />Ver: <span id="my"></span>
</body>
</html>