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

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

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

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
Question не работает управление с клавиатуры

написал значит я функцию которая должна управлять мувиком с клавиатуры. Вот код:
Код AS3:
package ru.RainbowAdventure.Characters
{
 
    import flash.display.*;
    import flash.events.*;
    import flash.ui.*;
    import flash.utils.*;
 
    import flash.text.*;
    public class Hero extends MovieClip
    {
        public static var ball:MovieClip;
        public var container_hero:MovieClip;
        public function Hero()
        {
 
            addHero();
            addEventListener(KeyboardEvent.KEY_DOWN, keyControl);
 
            trace("Hero initialized...");
        }
        private function addHero()
        {
            container_hero = new MovieClip();
            ball = new Hero_mc  ;
            ball.x = 36;
            ball.y = 443;
            ball.gotoAndStop(1);
            addChild(container_hero);
            container_hero.addChild(ball);
            trace("Hero showed...");
 
        }
 
        public function keyControl(e:KeyboardEvent):void
        {
 
 
            if (e.keyCode == Keyboard.LEFT)
            {
                ball.x -=  3;
            }
            if (e.keyCode == Keyboard.RIGHT)
            {
                ball.x +=  3;
            }
            if (e.keyCode == Keyboard.DOWN)
            {
                ball.y +=  3;
            }
            if (e.keyCode == Keyboard.UP)
            {
                ball.y -=  3;
            }
            trace("key control initialized...");
 
        }
    }
}
она не работает. протрейсил функция keyControl не вызывается. в чем проблема не нашел. может кто помочь? Пожалуйста

Старый 08.01.2011, 18:16
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 2  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyControl);

Старый 08.01.2011, 18:25
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 3  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
Цитата:
Сообщение от Bgg Посмотреть сообщение
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyControl);
так вылетает ошибка:
Код:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
    \Hero.as:18]


Последний раз редактировалось iNils; 08.01.2011 в 19:52.
Старый 08.01.2011, 18:29
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 4  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Угу, ведь stage появляется после добавления в список отображения.
Код AS3:
        public function Hero()
        {
            addEventListener(Event.ADDED_TO_STAGE, init);
        }
 
        private function init(event:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            addHero();
            addEventListener(KeyboardEvent.KEY_DOWN, keyControl);
            trace("Hero initialized...");
        }

Старый 08.01.2011, 18:40
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 5  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
хм. так всеравно не работает. функция keyControl не появляется, не трейсится

Старый 08.01.2011, 19:11
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 6  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Покажите обновлённый код. Должно работать.

Старый 08.01.2011, 19:22
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 7  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
Код AS3:
package ru.RainbowAdventure.Characters
{
 
	import flash.display.*;
	import flash.events.*;
	import flash.ui.*;
	import flash.utils.*;
 
	import flash.text.*;
	public class Hero extends MovieClip
	{
		public static var ball:MovieClip;
		public var container_hero:MovieClip;
		public function Hero()
		{
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private function init(event:Event):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			addHero();
			addEventListener(KeyboardEvent.KEY_DOWN, keyControl);
			trace("Hero initialized...");
		}
		private function addHero()
		{
			container_hero = new MovieClip();
			ball = new Hero_mc  ;
			ball.x = 36;
			ball.y = 443;
			ball.gotoAndStop(1);
			addChild(container_hero);
			container_hero.addChild(ball);
			trace("Hero showed...");
 
		}
 
		private function keyControl(e:KeyboardEvent):void
		{
 
 
			if (e.keyCode == Keyboard.LEFT)
			{
				ball.x -=  3;
			}
			if (e.keyCode == Keyboard.RIGHT)
			{
				ball.x +=  3;
			}
			if (e.keyCode == Keyboard.DOWN)
			{
				ball.y +=  3;
			}
			if (e.keyCode == Keyboard.UP)
			{
				ball.y -=  3;
			}
			trace("Key control initialized...");
 
		}
	}
}
вот

Старый 08.01.2011, 19:26
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 8  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Вот так у меня проходит инициализация:
Код AS3:
package {
 
	import flash.display.MovieClip;
	import flash.events.*;
 
	/*
		@author soniko
	*/
 
	public class Hero extends MovieClip {
 
		public function Hero() {
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(event:Event):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyControl);
		}
 
		public function keyControl(e:KeyboardEvent):void {
			trace("key control initialized...");
		}
	}
}

Старый 08.01.2011, 19:33
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 9  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
то есть у вас все работает? а какая версия флеша и его настройки?
мдаам странно. может подскажете почему у меня может функция keyControl не инициализироваться?


Последний раз редактировалось reNiks; 08.01.2011 в 19:46.
Старый 08.01.2011, 19:51
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 10  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Вот рабочий код на вашем примере
Код AS3:
package {
 
	import flash.display.*;
	import flash.events.*;
	import flash.ui.*;
	import flash.utils.*;
 	import flash.text.*;
 
 
	/*
		@author soniko
	*/
 
	public class Hero extends MovieClip {
 
		public static var ball:Shape;
		public var container_hero:MovieClip;
 
		public function Hero() {
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(event:Event):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			addHero();
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyControl);
			trace("Hero initialized...");
		}
 
		private function addHero():void {
			container_hero = new MovieClip();
			ball = new Shape();
			ball.graphics.lineStyle (5, 0xFF0000);
			ball.graphics.drawCircle (36, 443, 20);
			container_hero.addChild(ball);
			this.addChild(container_hero);
			trace("Hero showed...");
 		}
 
		private function keyControl(e:KeyboardEvent):void {
			if (e.keyCode == Keyboard.LEFT)	{
				ball.x -=  3;
			}
			if (e.keyCode == Keyboard.RIGHT) {
				ball.x +=  3;
			}
			if (e.keyCode == Keyboard.DOWN) {
				ball.y +=  3;
			}
			if (e.keyCode == Keyboard.UP) {
				ball.y -=  3;
			}
			trace("Key control initialized...");
		}
	}
}
FlashDevelop и 10-й дебаг плеер.

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

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

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


 


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


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