Показать сообщение отдельно
  #9 (permalink)  
Старый 26.05.2010, 20:44
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Вот вроде бы, что то похожее на наследование получилось
Делаем кролика, лису и волка, они говорят имя своего класса.
А потом бегут кто быстрее.

<script>
function Animal() {
	this.x;
	this.y;
	this.out=false;
}

Animal.prototype = {
	move:function(){
		var width=$('canvas').width;
		var height=$('canvas').height;		
		this.x+=this.distance;
		if(this.x>width) {this.out=true;}
	},
    echo : function(){alert(this.name);},
	setCoords : function(x,y){
		this.x=x;
		this.y=y;	
	}	
}
 
function Rabbit() {
    this.name = 'Кролик';
	this.distance = 3;	
}

function Wolf() {
    this.name = 'Волк';
	this.distance = 5;	
}

function Fox() {
    this.name = 'Лиса';
	this.distance = 4;
}

var animal = new Animal();
 
Rabbit.prototype = Wolf.prototype = Fox.prototype = animal;
var rabbit1 = new Rabbit();
var wolf1 = new Fox();
var fox1 = new Wolf();
 
rabbit1.echo();
wolf1.echo();
fox1.echo();

rabbit1.setCoords(2,30);
wolf1.setCoords(2,100);
fox1.setCoords(2,150);

function $(id){return document.getElementById(id);}

window.onload = function(){


canvas=$('canvas').getContext('2d');
interval=setInterval(function(){draw(canvas);},100);

}

function draw(ctx){
ctx.clearRect(0,0,400,200);
rabbit1.move();
fox1.move();
wolf1.move();
ctx.beginPath();
       ctx.arc(rabbit1.x,rabbit1.y,2,0,Math.PI*2,true); // Внешний круг
ctx.stroke();

ctx.beginPath();
       ctx.arc(wolf1.x,wolf1.y,2,0,Math.PI*2,true); // Внешний круг
ctx.stroke();

ctx.beginPath();
       ctx.arc(fox1.x,fox1.y,2,0,Math.PI*2,true); // Внешний круг
ctx.stroke();
if(rabbit1.out && rabbit1.out && rabbit1.out) {clearInterval(interval);}
}
</script>
<canvas id='canvas' width=400 height=200 style="border:1px solid #888888"></canvas>

Последний раз редактировалось mycoding, 26.05.2010 в 20:48.
Ответить с цитированием