![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2012
Сообщений: 4
|
Добрый день. Появилось желание отредактировать интерфейс во flash-приложении. К сожалению с flash и as3 раньше не сталкивался и за весь день так и не нашёл ответа на свой вопрос. Я "подключаюсь" к флешке как рассказано в этой статье, проблема в получении доступа к внутренним объектам целевого приложения.
Например там есть поле ввода пароля(объект класса NTextField) и я хочу что бы при вводе был виден пароль, для этого нужно изменить свойство displayAsPassword, а для этого нужно получить доступ к этому объекту. |
|
|||||
|
Modus ponens
|
А ник-то какой замечательный... Сказать честно - темы связанные с декомпиляцией и потенциально вредящие другим людям тут не приветствуются. Правила многих игр предусматривают санкции за автоматизацию игры и рассценивают это как нарушение соглашения пользователя.
Конечно, не исключено, что вы это делаете в целях самообразования, и что разработчики игры вовсе не против, но во избежание неприятных ситуаций, я бы все таки попросил, чтобы вы по крайней мере описали о какой игре идет речь, и что именно вы пытаетесь сделать.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: May 2012
Сообщений: 4
|
Спасибо за ответ.
Цитата:
.Цитата:
. Мне нужно изменить "дизайн" сайта, сделав нечто вроде автозаполнения формы. Конкретный пример я приведу только завтра, а то сейчас у нас уже 2 часа ночи- пора спать.Добавлено через 19 часов 30 минут Итак, максимально упрощённая форма ввода будет выглядеть вот так: 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; } } } 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); } } } } |
|
|||||
|
Регистрация: May 2012
Сообщений: 4
|
Спасибо всем кто пытался помочь, проблема была решена следующим образом- в функцию getLoaderInfoByDefinition передаётся любой класс из целевого приложения, а через возвращённый LoaderInfo добираемся до stage, который и будет основным классом приложения.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|