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

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

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

Регистрация: May 2012
Сообщений: 4
По умолчанию Поиск объектов

Добрый день. Появилось желание отредактировать интерфейс во flash-приложении. К сожалению с flash и as3 раньше не сталкивался и за весь день так и не нашёл ответа на свой вопрос. Я "подключаюсь" к флешке как рассказано в этой статье, проблема в получении доступа к внутренним объектам целевого приложения.
Например там есть поле ввода пароля(объект класса NTextField) и я хочу что бы при вводе был виден пароль, для этого нужно изменить свойство displayAsPassword, а для этого нужно получить доступ к этому объекту.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А ник-то какой замечательный... Сказать честно - темы связанные с декомпиляцией и потенциально вредящие другим людям тут не приветствуются. Правила многих игр предусматривают санкции за автоматизацию игры и рассценивают это как нарушение соглашения пользователя.
Конечно, не исключено, что вы это делаете в целях самообразования, и что разработчики игры вовсе не против, но во избежание неприятных ситуаций, я бы все таки попросил, чтобы вы по крайней мере описали о какой игре идет речь, и что именно вы пытаетесь сделать.
__________________
Hell is the possibility of sanity

Старый 24.05.2012, 02:56
Euler вне форума Посмотреть профиль Отправить личное сообщение для Euler Найти все сообщения от Euler
  № 3  
Ответить с цитированием
Euler

Регистрация: May 2012
Сообщений: 4
Спасибо за ответ.
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Сказать честно - темы связанные с декомпиляцией и потенциально вредящие другим людям тут не приветствуются. Правила многих игр предусматривают санкции за автоматизацию игры и рассценивают это как нарушение соглашения пользователя.
Ну я надеюсь, что вы не будете рассматривать мою задачу как деструктивную. Собственно одного поста с вашего форума достаточно, чтобы полностью разобраться в логике приложения, толком не знакомясь с технологией.
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Конечно, не исключено, что вы это делаете в целях самообразования, и что разработчики игры вовсе не против, но во избежание неприятных ситуаций, я бы все таки попросил, чтобы вы по крайней мере описали о какой игре идет речь, и что именно вы пытаетесь сделать.
Разработчики не против- я в их игры не играю. Мне нужно изменить "дизайн" сайта, сделав нечто вроде автозаполнения формы. Конкретный пример я приведу только завтра, а то сейчас у нас уже 2 часа ночи- пора спать.

Добавлено через 19 часов 30 минут
Итак, максимально упрощённая форма ввода будет выглядеть вот так:
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.text.TextField;
	import flash.text.TextFieldType;
	import flash.events.MouseEvent;
	import flash.events.TextEvent;
	import flash.events.Event;
	import flash.ui.Mouse;
	import flash.ui.MouseCursor;
 
	[SWF(width="300", height="200")]
 
	public class Window extends MovieClip 
	{
		protected var edit:TextField;
		protected var button:TextField;
 
		public function Window() 
		{
			var w:uint = root.stage.stageWidth, h:uint = stage.stageHeight;
			edit = new TextField();
			edit.x = 75;
			edit.y = 70;
			edit.width = 150;
			edit.height = 20;
			edit.background = true;
			edit.backgroundColor = 0xFFFF00;
			edit.type = TextFieldType.INPUT;
			addChild(edit);
			button = new TextField();
			button.x = 75;
			button.y = 110;
			button.width = 150;
			button.height = 20;
			button.background = true;
			button.backgroundColor = 0xFF0000;
			button.htmlText = "<p align='center'>Ввод</p>";
			button.addEventListener(MouseEvent.CLICK, Click);
			button.addEventListener(MouseEvent.MOUSE_OVER, Over);
			addChild(button);
			stage.focus = edit;
		}
 
		private function Click(e:MouseEvent):void 
		{
			//отправка данных
			edit.text = "";
			stage.focus = edit;
			return;
		}
 
		private function Over(e:MouseEvent):void 
		{
			Mouse.cursor = MouseCursor.ARROW;
			return;
		}
	}
}
А нужно добавить возможность автозаполнения, примерно так:
Код AS3:
package 
{
	//тут всё как прежде
 
	public class Window extends MovieClip 
	{
		protected var edit:TextField;
		protected var button:TextField;
 
		public function Window() 
		{
			//тут прежний код
			MyFunc(); // а эта функция в моём загрузчике и выполняется при событии "allComplete"
		}
		//дальше опять прежний код
		//а все переменные ниже, должны находится в моём загрузчике
		private var arr:Vector.<String>;
		protected function GetElem(arr:Vector.<String>, str:String):String
		{ //разумеется это просто заглушка, каждый раз перебирать весь массив я не стану :)
			for(var i:int=0;i<arr.length;i++)
			{
				if(arr[i].substr(0, str.length)==str)
				{
					return arr[i];
				}
			}
			return "";
		}
		public function MyFunc():void
		{
			arr = new Vector.<String>();
			edit.addEventListener(Event.CHANGE, ChangeText); //вот тут вся проблема- edit не найти.
			button.addEventListener(MouseEvent.CLICK, PreClick, false, 1); // ну и button, разумеется, тоже.
		}
		private function ChangeText(e:Event):void
                {
			var t:String = edit.text;
			var len:int = t.length;
			var str:String = GetElem(arr, t);
			if(str!="")
			{
				edit.text = str;
				edit.setSelection(len, edit.text.length);
			}
                }
		private function PreClick(e:MouseEvent):void
                {
			if((edit.text!="")&&(GetElem(arr, edit.text)=="")) // опять же- edit'а нету...
			{
				arr.push(edit.text);
			}
                }
	}
}

Старый 28.05.2012, 01:15
Euler вне форума Посмотреть профиль Отправить личное сообщение для Euler Найти все сообщения от Euler
  № 4  
Ответить с цитированием
Euler

Регистрация: May 2012
Сообщений: 4
Спасибо всем кто пытался помочь, проблема была решена следующим образом- в функцию getLoaderInfoByDefinition передаётся любой класс из целевого приложения, а через возвращённый LoaderInfo добираемся до stage, который и будет основным классом приложения.

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

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

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


 


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


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