Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.04.2010, 18:56
envy вне форума Посмотреть профиль Отправить личное сообщение для envy Найти все сообщения от envy
  № 21  
Ответить с цитированием
envy

Регистрация: Jan 2010
Сообщений: 23
Код AS3:
package {
 import flash.text.*;
 import flash.events.*;
 import flash.ui.*;
 import flash.utils.Timer; 
 import flash.display.*;
  public class main_game extends MovieClip {
	  public var manX, manY : int;
	  public var speed = 3;
 
  	//--------------------------------------- 
	public function main_game() {
 
 
	 dude.stop(); 
 
 
	 addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
	}
	//----------------------------------------
	private function onAddedToStage(event:Event) {
		this.stage.stageFocusRect = false; 
    	stage.focus = this; 
 
 		 stage.addEventListener(MouseEvent.CLICK, onClick); 
 
	 }
	//------------------------- 
 
	//-----------------------------------------------
	function onClick(e:MouseEvent) { //нажатие кнопки - запомнили
		dude.stop();
		manX = e.stageX;
		manY = e.stageY; //запомнила координаты
		stage.addEventListener(Event.ENTER_FRAME, render);  
	}
 
 
	//--------------------------------------------------	 
 
 
	//-----------------------------------------------
	function render(e:Event) { //
		//************
		var moires1 =  [0, 22.6, 66.6, 111.6, 156.6, 202.6, 247.6, 294.6];
		var moires2 =  [22.5, 66.5, 111.5, 156.5, 202.5, 247.5, 294.5, 340.5];
      	var radians = - Math.atan2(dude.y-manY, dude.x-manX);
		var degrees = radians*180/Math.PI+180;
		//trace (degrees);
		var angle = 1;
		var destX, destY :int;
		var a: String; 
 
		for (var i=0; i<=moires1.length; ++i) {
			if (degrees>=moires1[i] && degrees<=moires2[i]) {angle = i}
			else if (degrees>340.5 && degrees<=360) {angle = 0 }
 
		}
		var j = 0;
		var offsetX = manX - dude.x;
		var offsetY = manY - dude.y;
		if (offsetX > 0) {destX = 1} else {destX = -1} //направление + или -
		if (offsetY > 0) {destY = 1} else {destY = -1}
 
		//
		graphics.lineStyle(0, 0);  
		graphics.moveTo(dude.x, dude.y);  
		graphics.lineTo(manX, manY);
		//
 
 
		/*trace("____________")
		trace("x=",dude.x, "mx=",manX, "offsetX = ", offsetX);
		trace("y=",dude.y, "mx=",manY, "offsety = ", offsetY);
		trace("____________")*/
 
		a = angle + "1";
		//trace(a);
 
		if (Math.abs(offsetX) > speed) {
			dude.gotoAndPlay(a);
			dude.play();
			/*if (dude.currentLabel.charAt(1) == "7") {
				dude.gotoAndPlay(a);
				dude.play();
			}*/
			//trace(dude.currentLabel);
			dude.x = dude.x + speed * destX; //переместили
			offsetX = offsetX - speed * destX;
		}
 
		if (Math.abs(offsetY)> speed) {
			dude.play();			
			dude.y = dude.y + speed * destY;
			offsetY = offsetY - speed * destY;
		}
 
 
 
		//stage.removeEventListener(Event.ENTER_FRAME, render);  
			}
	//--------------------------------------------------	
 
  }
}

Вот весь класс, он один

Старый 27.04.2010, 18:59
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 22  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
А потому что это свойство
Свойства CurrentFrame у MovieClip нету. currentFrame же можно всегда переопределить.

Старый 27.04.2010, 19:20
envy вне форума Посмотреть профиль Отправить личное сообщение для envy Найти все сообщения от envy
  № 23  
Ответить с цитированием
envy

Регистрация: Jan 2010
Сообщений: 23
Точнее, он сначала доводит до нужной точки персонажа, а потом уже запускает его анимацию

Старый 27.04.2010, 19:29
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 24  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Psycho Tiger, и как вы переопределением свойства превратите его в метод?

Старый 27.04.2010, 20:15
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 25  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
Psycho Tiger, и как вы переопределением свойства превратите его в метод?
Пора брать отпуск мне, да, никак. А так хочется перегрузку =(

Старый 27.04.2010, 20:18
envy вне форума Посмотреть профиль Отправить личное сообщение для envy Найти все сообщения от envy
  № 26  
Ответить с цитированием
envy

Регистрация: Jan 2010
Сообщений: 23
и все же, может, поможете? (

Старый 27.04.2010, 20:35
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 27  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
envy, у вас проблема в том что человечек не хочет на нужный кадр вставать, верно?
Вам что нужно, чтобы по клику человечек что сделал? Встал на своей временной шкале на нужный кадр из 360 или что?
В первом посте у вас проблема была в том, что вы currentFrame писали с большой буквы, как и gotoAndStop. Они пишутся с маленькой буквы, это важно.

Старый 27.04.2010, 20:52
envy вне форума Посмотреть профиль Отправить личное сообщение для envy Найти все сообщения от envy
  № 28  
Ответить с цитированием
envy

Регистрация: Jan 2010
Сообщений: 23
нет, человечек встает на нужный кадр. И остается на нем, как будто я использовала gotoAndStop().
dude.gotoAndPlay(5); - все вроде правильно написала. Stop() нигде больше нет.

Старый 27.04.2010, 21:00
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 29  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
У вас тут дело вот в чем:
render вызывается каждый кадр (потому что повешен на ENTER_FRAME)
Код AS3:
dude.gotoAndPlay(a);
вызывается там же, т.е. каждый кадр. И в итоге на каждом следующем кадре человечек хочет проиграться, встать на следующий - а вы его бац, и снова
Код AS3:
dude.gotoAndPlay(a);
и он вновь встаёт на кадр a. То есть он проигрывается, проблема в постоянном вызове gotoAndPlay

Старый 27.04.2010, 21:06
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 30  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от i.o. Посмотреть сообщение
mickfallout, дак там с большой буковки CurrentFrame прописано у автора...
наследие C#,C++ или Java наверное..хотя сомневаюсь))))
__________________
Отряд Котовскага

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:07.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.