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

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

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

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Не двигаются объекты

Создал массив

Код AS3:
public static var platform:Array = [ 
           [1, 1, 1, 1, 1],
           [1, 1, 1, 1, 1],
           [1, 1, 1, 1, 1],
           [1, 1, 1, 1, 1],
           ];
Код AS3:
public function createplatform():void
		{
			for (var i:uint=0; i<platform.length; i++) 
       { 
        for (var j:uint=0; j<platform[i].length; j++) 
        { 
         if (platform[i][j] > 0) 
         { 
          platforma = new Platforming;
          platforma.width = platforma_width;
          platforma.height = platforma_height;
          platforma.x = j * size - 750; 
          platforma.y = i * size + 135;
		  platforma.gotoAndStop(platform[i][j]);
          addChild(platforma);
Добавляю объекты. Но когда пытаюсь переместить по нажатию на кнопку

Код AS3:
public function goPlatform(e:Event):void
		{
			if (left_press_platform)
			{
			platforma.x -= _speedplatform;
			trace("Работает");
			}
Кнопка срабатывает, а объекты не двигаются, находятся в том же положении, _speedfpatform = 3;. В чем проблема?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
То есть Вы думаете, что у Вас в классе сейчас 20 переменных, видимых в любой функции, каждая из которых одновременно называется platforma, и все они переместятся, если написать platforma.x -= _speedplatform; ?
Может, прежде чем писать Игру, стоит как-то что-то почитать, попробовать что-то простое? Я даже не знаю, как объяснять такие вещи.. это же на уровне интуиции должно быть понятно, что кнопки "сделать так как я хочу" не бывает...
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2012
Сообщений: 836
Как это должно помочь? Я слышу от вас только упреки, а действительно помочь вы не можете судя по всему или не хотите, но если не хотите, то и не надо говорить какой я криворукий и т.п, я знаю что мне надо и как это делать моё дело, форум и создан для того, чтобы задавать вопросы и получать на них ответы. Люди найдутся - помогут, а если Вы не можете помочь, то и не надо вообще писать ничего. Как мне узнать названия каждого объекта? Или куда они вообще записываются


Последний раз редактировалось Godwarlock; 15.03.2014 в 19:30.
Старый 15.03.2014, 19:44
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ага. Но дело в том, что "помочь" может вот это: "что-то почитать, попробовать что-то простое".
Иначе тут надо писать целую статью о самых основах. Или тупо дать готовый код. Что Вам тоже ничем не поможет. Вам ведь дальше еще придется "писать строчки", и без понимания этих самых основ ничего не получится.
Ошибки я написал. Вы их поняли?
Вы создаете 20 объектов. Изменяете .х у одного.
Вы создаете 20 объектов, но не сохраняете на них ссылки.
У Вас есть переменная platforma. Она не может хранить ссылку на 20 объектов. Она помнит только последний.
__________________
Reality.getBounds(this);

Старый 15.03.2014, 19:53
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 5  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Ага. Но дело в том, что "помочь" может вот это: "что-то почитать, попробовать что-то простое".
Иначе тут надо писать целую статью о самых основах. Или тупо дать готовый код. Что Вам тоже ничем не поможет. Вам ведь дальше еще придется "писать строчки", и без понимания этих самых основ ничего не получится.
Ошибки я написал. Вы их поняли?
Вы создаете 20 объектов. Изменяете .х у одного.
Вы создаете 20 объектов, но не сохраняете на них ссылки.
У Вас есть переменная platforma. Она не может хранить ссылку на 20 объектов. Она помнит только последний.
Как и куда тогда лучше сохранить ссылки на них? В массив?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Как мне узнать названия каждого объекта?
Нет никаких названий у объектов. Есть ссылки. Это такое понятие, его нужно запомнить и использовать. Переменные хранят ссылки на объекты (за исключением чисел и строк). Одна переменная — одна ссылка — один объект.
Вы можете:
1) Сохранять каждый объект в общий массив объектов, и когда надо передвинуть, перебирать весь массив циклом и двигать каждый объект.
2) Поместить все объекты в один общий контейнер, и двигать его. Это подходит, если все объекты всегда двигаются вместе и не нужно нигде в программе обращаться к каждому по-отдельности за какими-то свойствами и вызывать методы (тот же gotoAndStop() в частности).
__________________
Reality.getBounds(this);

Старый 15.03.2014, 20:16
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 7  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Код AS3:
public function createplatform():void
		{
			for (var i:uint=0; i<platform.length; i++) 
       { 
        for (var j:uint=0; j<platform[i].length; j++) 
        { 
         if (platform[i][j] > 0) 
         { 
          platforma = new Platforming;
          platforma.width = platforma_width;
          platforma.height = platforma_height;
          platforma.x = j * size - 750; 
          platforma.y = i * size + 135;
	 platforma.gotoAndStop(platform[i][j]);
         platformobj.push(platforma);
          addChild(platforma);
		 }
      }
Создал массив platformobj.[object Platforming] добавились в него.
Код AS3:
public function goPlatform(e:Event):void
		{
			if (left_press_platform)
			{
			for (var i:uint = 0; i < platformobj.length; i++) 
			{
			platforma.x -= speed_platform;
			}
			}
Не передвигается


Последний раз редактировалось Godwarlock; 15.03.2014 в 20:28.
Старый 15.03.2014, 20:29
FlasherEgor вне форума Посмотреть профиль Отправить личное сообщение для FlasherEgor Найти все сообщения от FlasherEgor
  № 8  
Ответить с цитированием
FlasherEgor

Регистрация: Nov 2013
Сообщений: 86
Цитата:
Код AS3:
public function createplatform():void
		{
			for (var i:uint=0; i<platform.length; i++) 
       { 
        for (var j:uint=0; j<platform[i].length; j++) 
        { 
         if (platform[i][j] > 0) 
         { 
          platforma = new Platforming;
          platforma.width = platforma_width;
          platforma.height = platforma_height;
          platforma.x = j * size - 750; 
          platforma.y = i * size + 135;
	 platforma.gotoAndStop(platform[i][j]);
         platformobj.push(platforma);
          addChild(platforma);
		 }
      }
А вы для каждого элемента platform[i] создаете ли массив, чтобы platform[i][j] содержало ссылку?


Последний раз редактировалось FlasherEgor; 15.03.2014 в 20:30. Причина: Пояснение, на что ответ
Старый 15.03.2014, 22:18
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 9  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Чёт не получается нефига. Дал каждой платформе имя и засунул в массив, протестировал, всё работает, но этот вариант, меньше в коде и никак не допру в чем косяк

Старый 15.03.2014, 22:43
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
public function goPlatform(e:Event):void
{
	if (left_press_platform)
	{
		for (var i:uint = 0; i < platformobj.length; i++) 
		{
			platformobj[i].x -= speed_platform;
		}
	}
}
__________________
Reality.getBounds(this);

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

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

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


 


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


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