PDA

Просмотр полной версии : Проблема с Bindable


NezLich
02.10.2011, 22:58
Есть некий пакет:

package test {
public class one {
...
[Bindable]
public var Status:Object = {t:'t'};
...
public function change():void {
Status['t'] = '?';
}

В главном коде:
...
BindingUtils.bindProperty(Field, 'text', one.Status, 't');
...
one.Change();

И не показывается изменение в компоненте Field. Хотя, если сделать так:
...
public var Status:String = 't';
...
То работает...
В чем проблема может быть ? :(

Wolsh
02.10.2011, 23:03
Для оформления своего кода надо использовать теги (http://www.flasher.ru/forum/showthread.php?t=122539)

etc
02.10.2011, 23:17
Бинд не распространяется на свойства объекта.

Silicium
03.10.2011, 09:46
Если не ошибаюсь, биндинг производится только по ссылкам. По значениям только для int (uint), String, Nubmer и Boolean

stweet
03.10.2011, 10:06
Есть же ветка по flex, какого хера в в чистый код лезем?

Inet_PC
03.10.2011, 10:19
А кто сказал, что нельзя использовать BindingUtils в чистом AS3 приложении?

stweet
03.10.2011, 10:21
А кто сказал, что нельзя использовать BindingUtils в чистом AS3 приложении?

я о вопросе топикстартера вообще то.

Inet_PC
03.10.2011, 11:54
А как Вы определили, что это flex код? По метатегу [Bindable] ? Я могу любой метатег использовать и сам его обрабытывать, или я что-то не углядел?

GBee
03.10.2011, 12:00
Я могу любой метатег использовать и сам его обрабытывать

Покажите пример?

Inet_PC
03.10.2011, 13:50
Я могу любой метатег использовать и сам его обрабытывать
Любой, эт я конечно загнул, просто хотел сказать, что проблемно точно сказать Flex это код или нет

GBee
03.10.2011, 13:54
http://the33cows.com/flex/2009/09/06/flex-data-binding-in-as3-project/

Inet_PC
03.10.2011, 14:04
Видел эту статью, не понятно как у автора заработало, исходников он не выложил

GBee
03.10.2011, 16:12
Видел эту статью, не понятно как у автора заработало, исходников он не выложил

package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;

import mx.binding.utils.BindingUtils;

[SWF(backgroundColor="#ffffff")]
public class DataBindingSample extends Sprite
{
[Bindable]
public var stageY:Number = 0;
[Bindable]
public var stageX:Number = 0;

private var circle:Sprite;

public function DataBindingSample()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

circle = new Sprite();
circle.graphics.beginFill(0x55aaFF,1);
circle.graphics.drawCircle(0,0,10);
circle.graphics.endFill();
addChild(circle);

BindingUtils.bindProperty(circle,"x", this, "stageX");
BindingUtils.bindProperty(circle,"y", this, "stageY");

stage.addEventListener(MouseEvent.MOUSE_MOVE, changePosition);

}

protected function changePosition(event: MouseEvent): void
{
stageX = event.stageX;
stageY = event.stageY;
}

}
}

http://dl.************/u/6132064/binding.png

Inet_PC
03.10.2011, 16:16
Ясно, но не суть, вопрос то был в использовании тега Bindable не по назначению, а тут то как раз все правильно

Добавлено через 6 минут
А еще точнее, о том, что по выложенному топикстартером куску кода, нельзя однозначно определить в каком из разделов должен находится топик

stweet
03.10.2011, 19:19
Ясно, но не суть, вопрос то был в использовании тега Bindable не по назначению, а тут то как раз все правильно

Добавлено через 6 минут
А еще точнее, о том, что по выложенному топикстартером куску кода, нельзя однозначно определить в каком из разделов должен находится топик

Во флексе этот тег встречал на каждом шагу, в чистом AS ни разу.

Inet_PC
03.10.2011, 19:54
Я и GBee привели Вам примеры, я думаю не стоит быть на столько категоричным

Добавлено через 1 минуту
А в общем случае да, я с вами согласен

GBee
03.10.2011, 20:59
Я, если честно, тоже не встречал :о)) Б(ай|и)ндингом лучше не увлекаться, имхо, конечно.

Inet_PC
03.10.2011, 23:14
Могу даже немного громче сказать: Байндинг - зло)), своего рода синтаксический сахар (http://ru.wikipedia.org/wiki/Синтаксический_сахар). Ну и с откладкой такого приложения (особенно чужого) можно полысеть)

stweet
03.10.2011, 23:38
Могу даже немного громче сказать: Байндинг - зло)), своего рода синтаксический сахар (http://ru.wikipedia.org/wiki/Синтаксический_сахар). Ну и с откладкой такого приложения (особенно чужого) можно полысеть)

Когда я только устроился в свою компанию, моей первой задачей как раз и было отладить приложение написанном на флексе, я за месяц лет на 100500 постарел))) Я бы добавил что, вообще флекс зло)))

Inet_PC
04.10.2011, 00:58
Я бы добавил что, вообще флекс зло)))
Золотые слова)

NezLich
04.10.2011, 14:57
"Каждому свое". Эх, ну да ладно, использовать или не использовать. Буду по-другому действовать :)

wvxvw
04.10.2011, 14:58
Попробую ответить на изначальный вопрос:
1. За то, что имена переменных написаны с заглавной, а классов - со строчной, - уволить без разговоров. Это вносит огромную путаницу в код (потому что все остальные всегда делают наоборот) и это в гораздо большей степени усложняет работу с исходниками, чем плохая архитектура или неочевидная логика, или повторение одного и того же кода.
2. Компилируйте с -keep, это вам сразу же даст представление о том, что происходит. Заодно, загляните в исходники BindingUtils. Если вы это сделаете - использовать биндинг в вашем коде всяческое желание пропадет. Смысл биндинга в том, что он генерирует код, который "оборачивает" ваш код, и перенаправляет вызовы объявленной вами функции (или доступ к объявленной вами переменной) к сгенерированому коду. Сгенерированый код плохой. Он плохой тем, что нерационально использует память создавая кучу лишних объектов. Если вы сами сделаете то же самое, но вдумчиво, вы сделаете это гораздо лучше.

NezLich
04.10.2011, 15:12
Есть функция в классе, которая получает некие данных с сайта. Когда функция успешно получает данные и записывает их в переменные, мне их нужно получить. Но как...Пока только с использованием Binding...Или может есть другой способ узнать, когда функция успешно получит данные ?

GBee
04.10.2011, 16:55
Сгенерированый код плохой. Он плохой тем, что нерационально использует память создавая кучу лишних объектов. Если вы сами сделаете то же самое, но вдумчиво, вы сделаете это гораздо лучше.

Интересно, что вы думаете о Realaxy ActionScript Editor?

Inet_PC
06.10.2011, 09:55
Интересно, что вы думаете о Realaxy ActionScript Editor?
В топку.

Добавлено через 57 секунд
Так жрать память, работать комфортно невозможно, и код скорее всего будет на том же уровне((

wvxvw
07.10.2011, 12:52
Сгенерированому коду не обязательно быть плохим, но когда нет возможности настроить, или изменить генератор, то возникает проблема, когда сгенерированый код не подходит для задачи, а альтернативу пилить долго. И тогда старый, плохо подходящий способ подстраивают под новую ситуацию - получаем, то что в народе называется костылями. Биндинг, это тот случай, когда костылей уже на много больше, чем самого полезного кода.
RASE - отдельная песня. Задумка хорошая, но средства для реализации, как на подбор, самые плохие.