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

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

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

Регистрация: Nov 2003
Сообщений: 474
Отправить сообщение для aaanet с помощью ICQ
По умолчанию Упрощение кода.

Доброго времени суток!

Подскажите пожалуйста, как оптимизировать код?
Код:
		ystr1.visible = true;
		ystr2.visible = true;
		ystr3.visible = true;
		ystr4.visible = true;
		ystr5.visible = true;
		ystr6.visible = true;
		ystr7.visible = true;
		ystr8.visible = true;
		ystr9.visible = true;
		ystr10.visible = true;
		ystr11.visible = true;
и сделать что-то типа
Код:
 ystr1,ystr2,yst3.visible = true;
нубовский вопрос, ну всё же.
цикл не подойдет.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
цикл не подойдет.
Чем это?
Впрочем способ без цикла есть – засунуть все эти страсти в один клип-контейнер и сделать невидимость ему.
__________________
Reality.getBounds(this);

Старый 04.05.2011, 04:03
aaanet вне форума Посмотреть профиль Отправить личное сообщение для aaanet Найти все сообщения от aaanet
  № 3  
Ответить с цитированием
aaanet
 
Аватар для aaanet

Регистрация: Nov 2003
Сообщений: 474
Отправить сообщение для aaanet с помощью ICQ
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Чем это?
Впрочем способ без цикла есть – засунуть все эти страсти в один клип-контейнер и сделать невидимость ему.
А других вариантов нету? Какое-нибудь перечисление, например, без такого громоздкого кода.

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

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

Старый 04.05.2011, 05:29
aaanet вне форума Посмотреть профиль Отправить личное сообщение для aaanet Найти все сообщения от aaanet
  № 5  
Ответить с цитированием
aaanet
 
Аватар для aaanet

Регистрация: Nov 2003
Сообщений: 474
Отправить сообщение для aaanet с помощью ICQ
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Это называется "цикл", увы. Но если Тот, кто запрещает Вам использовать циклы, не покарал Вас за цикличный аватар, то, может быть, и здесь обойдется? Можно же улучить момент, когда Он отвернется, и быстренько вставить цикл?
В остроумии Вам равных нет, это я уже понял.
А по делу, цикл не подходит.

Старый 04.05.2011, 08:41
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
И все же и правда хотелось узнать, кто вам запретил делать циклы. Послушайте Wolsh, он дело говорит.

Ну можно сделать так:
Код AS3:
ystr1.visible = ystr2.visible = ... = ystrNvisible = false;
И что, сильно упростилось? Все такой же индусский код. Делайте циклом.
__________________
тут я

Старый 04.05.2011, 09:47
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 7  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
А я хочу повторить вопрос, который задал Wolsh. Почему не подойдет цикл?

Старый 04.05.2011, 11:06
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>Почему не подойдет цикл?
осмелюсь предположить, что только потому, что мы не ищем легких путей
спецом для этого случая вариант со статическим списком - внешне выглядит как заказывали: чик и все,
но должен огорчить товарища - реализация все равно через цикл, как и любая другая для подобной задачки
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite 
	{
		public function Main():void 
		{
			//10 экземпляров
			for (var i:int = 0; i < 10; i++) 
			{
				addChild(new Ystr());
			}
			stage.addEventListener(MouseEvent.CLICK, onClick);
		}
		//переключаем видимость по клику
		private function onClick(event:MouseEvent):void 
		{
			Ystr.visible = !Ystr.visible;
		}
	}
}
//==========================================================
import flash.display.Sprite;
class Ystr extends Sprite
{
	private static var list:Array/*Ystr*/ = [];
	private static var _visible:Boolean = true;
	public function Ystr():void 
	{
		graphics.beginFill(0xC0C0C0);
		graphics.drawCircle(0, 0, 10);
		x = Math.random() * 400;
		y = Math.random() * 400;
		list.push(this);
	}
	public static function get visible():Boolean {return _visible;}
	public static function set visible(value:Boolean):void
	{
		if (value != _visible) 
		{
			_visible = value;
			for each(var item:Ystr in list) 
			{
				item.visible = _visible;
			}
		}
	}
}

Старый 04.05.2011, 11:07
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 9  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Код AS3:
for (var i:int=0; i<=11; i++)
    this["ystr" + i].visible = true;
Все равно "не подходит"?

Старый 04.05.2011, 11:30
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Кроме цикла есть еще рекурсия например:
Код AS3:
private function changeNextVisible(child:DisplayObject, visibility:Boolean, depth:int = 0):void
{
    if (child)
    {
        child.visible = visibility;
        this.changeNextVisible(super.getChildAt(depth + 1), visibility, depth + 1);
    }
}
Это если циклы религия не позволяет
__________________
Hell is the possibility of sanity

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

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

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


 


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


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