 
			
				10.08.2012, 12:39
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 ✔ 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.06.2012 
					
					
					
						Сообщений: 513
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от daima
			 
		
	 | 
 
	| 
		var cache_canvas=c.getImageData(x,y,16,16) - запомнили подложку. а дальше ф-я animateFlower() рисует определенные куски спрайта
	 | 
 
	
 
 Ааааа    спасибо    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.08.2012, 13:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2012 
					
					
					
						Сообщений: 59
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Caminante
			 
		
	 | 
 
	
		Попробуйте так: 
 
var p = flower.posX();
alert(p);
  
 
 
 
Можно присвоить создаваемый объект переменной и таким образом обращаться к ней. Например, var rose = flower.init(150, 150,sprite). Если цветов будет много, можно создать для них массив и обращаться по порядковому номеру.
	 | 
 
	
 
 Пишет undefined. Возможно что-то я не так написал. Полный код:
 
var flower= {
init: function(x,y,sprite){
var wind;
var pos=0;
function animateFlower(){код анимации цветка}
var cache_canvas=c.getImageData(x,y,16,16)
animateFlower();
wind=setInterval(animateFlower,500)
},
clear: function(){
	clearInterval(wind);
}
}
Запускаем var rose = flower.init(150, 100,sprite); где 150 - позиция по х, 100 - позиция по y. 
 
1. Что мне нужно написать в коде чтобы считывать позицию по х и y и как будет выглядеть этот вызов? rose.posX?  
2. когда чел наступит на цветок - его нужно удалить. для этого я ввел ф-ю clear только непонятно как добраться до ссылки на таймер wind и как ее в этом случае запустить.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.08.2012, 13:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.03.2012 
					
					
					
						Сообщений: 40
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от daima
			
		
	 | 
 
	| 
		Что мне нужно написать в коде чтобы считывать позицию по х и y и как будет выглядеть этот вызов? rose.posX?
	 | 
 
	
 
 Нужно соответствующую функцию добавить и вызвать. Вообще сейчас у создаваемого вами цветка нет свойства x. Как вариант, можно было бы сделать так:
 
function Flower(x, y)
{
this.x = x;
this.y = y;
this.posX = function(){return this.x};
}
var rose = new Flower(10, 20);
      
alert(rose.posX());
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.08.2012, 14:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2012 
					
					
					
						Сообщений: 59
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Caminante
			 
		
	 | 
 
	| 
		Нужно соответствующую функцию добавить и вызвать. Вообще сейчас у создаваемого вами цветка нет свойства x. Как вариант, можно было бы сделать так:
	 | 
 
	
 
 экий ты шустый. Ты исходный код видел? надо в нем как-то исхитриться 
ВО! Переписал. 
 
var flower= {
init: function(x,y,sprite){
var wind;
var pos=0;
function animateFlower(){//alert(cache_canvas);
	c.putImageData(cache_canvas,x,y);
	var imgFlower=new Image();
	imgFlower.src=sprite.spriteimg;
	c.drawImage(imgFlower,(sprite.flower[0]+pos)*16,sprite.flower[1]*16,16,16,x,y,16,16)
	pos<3 ? pos++ : pos=0;
}
this.posX = x;
this.posY = y;
var cache_canvas=c.getImageData(x,y,16,16)
animateFlower();
this.wind=setInterval(animateFlower,500)
},
clear: function(){
	clearInterval(this.wind);
},
}
Допустим, хотим несколько цветков: var rose[0] = flower.init(150, 200,sprite);  var rose[1] = flower.init(150, 100,sprite); Теперь, как получить позицию скажем rose[1]?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось daima, 14.08.2012 в 15:46.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.08.2012, 16:18
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.03.2012 
					
					
					
						Сообщений: 40
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 На что ссылается this в вашем коде? 
Попробуйте создать var rose = flower.init(150, 200,sprite) и запросить rose.posX и flower.posX. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.08.2012, 16:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2012 
					
					
					
						Сообщений: 59
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Caminante
			 
		
	 | 
 
	
		На что ссылается this в вашем коде? 
Попробуйте создать var rose = flower.init(150, 200,sprite) и запросить rose.posX и flower.posX.
	 | 
 
	
 
 
<script>
var flower= {
init: function(x,y){
var wind;
var pos=0;
function animateFlower(){
}
this.posX = x;
this.posY = y;
return this;
},
clear: function(){
	clearInterval(this.wind);
}
}
var rose=new Array();
for(var i = 0; i < 2; i++) {
   		  rose.push(flower.init(i*100, i*100));
	  }
alert(rose[0].posX+" "+rose[0].posY+" "+rose[1].posX+" "+rose[1].posY);
</script>
Непонятно мне, почему возвращаются координаты последнего объекта  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.08.2012, 17:06
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.03.2012 
					
					
					
						Сообщений: 40
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от daima
			
		
	 | 
 
	| 
		Непонятно мне, почему возвращаются координаты последнего объекта
	 | 
 
	
 
 В цикле изменяются x и y объекта flower, которые после второй итерации равны 100. В массив при этом оба раза записывается один и тот же объект flower (можно проверить rose[0] === flower).  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.08.2012, 17:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2012 
					
					
					
						Сообщений: 59
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		беда     Как же быть то?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.08.2012, 09:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.03.2012 
					
					
					
						Сообщений: 40
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Можно посмотреть в сторону предложенного мной сначала решения. Или еще такой вариант: 
function createObject(x, y)
{      
   return {x: x, y: y}
}
          
var o = createObject(2,3);
var o2 = createObject(7,8);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.08.2012, 10:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2012 
					
					
					
						Сообщений: 59
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Caminante
			 
		
	 | 
 
	| 
		Можно посмотреть в сторону предложенного мной сначала решения. Или еще такой вариант:
	 | 
 
	
 
 не-не-не, так не пойдет.  
У нас есть объект flower, у него есть свойства init (инициализация), posX,posY - его текущие координаты, clear (удаление). Вот с ним и работаем. Никакие непонятные ф-и не нужны    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |