Титановый сплав - Закрытие окна

Я работаю в Titanium Alloy и создаю всплывающее окно в качестве виджета. Я хочу, чтобы близкое изображение было над правым верхним углом, чтобы оно немного высовывалось из всплывающего окна. Поэтому я создал 2 отдельных окна в xml-файле виджета. Один просто удерживает закрытие изображения, а другой всплывающее окно.
Все выглядит так, как я хочу, но я не могу заставить всплывающее окно закрыться?!

Я пробовал: $.myWindow.close();

Я пробовал: var win = Widget.createController('myWindow', 'myWindowID').getView(); выиграть.закрыть();

Но ничего не происходит

Вот мой xml-код:

<Alloy>
    <Window id="popup">
        <View id="myImagesViewIn" class="myImagesViewIn" onClick="closeWin">
            <ImageView id="myImageIn" class="myImageIN" />
        </View>
    </Window>
    <Window id="winImageOut" onClick="closeWindow">
        <View id="myImagesViewOut" class="myImagesViewOut" >
            <ImageView id="myImageOut" class="myImageOut" />
        </View>
    </Window>
</Alloy>

А вот мой JS-код:

var args = arguments[0] || {};

$.popup.transform = args.transform || '';

/*
 exports.setDataModalWindow = function(data) {
 $.lblModalWinHead.text = data.title;
 $.lblModalWinBody.text = data.text;
 };
 */
function fnCloseClick() {
    $.viewModal.close();
}

/*
 $.myImagesViewOut.addEventListener('click', function(e) {
 $.popup.close();
 });
 */

function closeWin(e) {
    $.myImagesViewOut.setVisible(false);
    $.popup.close();

}

function closeWindow(e) {

    //$.popup.close();
    var wins = Widget.createController('widget', 'popup').getView();
    wins.setVisible(false);
    alert('hejsan');
    //Ti.API.info('close');
}

exports.openModalWindow = function(arg) {

    //$.lblModalTitle.text = arg.title || 'foo';
    //$.lblModalText.text = arg.text || 'ff';

    var t = Titanium.UI.create2DMatrix().scale(0);

    var args = {

        transform : t
    };

    var controller = Widget.createController('widget', args).getView();

    controller.open();

    // controller.animate(a2);

    var t1 = Titanium.UI.create2DMatrix();
    t1 = t1.scale(1.2);
    var a1 = Titanium.UI.createAnimation();
    a1.transform = t1;
    a1.duration = 400;

    controller.animate(a1);

    var b1 = Titanium.UI.create2DMatrix();
    var a2;
    a1.addEventListener('complete', function() {
        b1 = b1.scale(1.5);
        a2 = Titanium.UI.createAnimation();
        a2.transform = b1;
        a2.duration = 400;

        controller.animate(a2);

    });
    // create the controller a keep the reference

    /*
    controller.setDetails({
    label: 'Are you sure you wish to log out?\n\nIf you do so you will no longer be able to take part in any challenges until you login again.',
    ok: 'Log me out',
    cancel: 'Cancel'
    });
    */
    // now get a reference to the UI inside the controller
    //var win = controller.getView();

    a1.addEventListener('complete', function() {
        // simple reset animation
        var t2 = Ti.UI.create2DMatrix();
        var a3 = Titanium.UI.createAnimation();
        a3.transform = t2;
        a3.duration = 400;
        controller.animate(a3);

        $.winImageOut.open();

    });

};

person AppfiXarna    schedule 12.12.2013    source источник


Ответы (1)


во-первых, вы открываете всплывающее окно, поэтому вы должны открыть это окно...

затем вы должны закрыть окно в функции closeWindow.

function closeWindow(e) {

    $.popup.close();
    $.winImageOut.close();
    alert('hejsan');
    //Ti.API.info('close');
}

Я не знаю вашего требования, но вы должны использовать только одно окно для отображения всплывающего окна, тогда вам будет легко обрабатывать события открытия и закрытия окна.

person Mitul Bhalia    schedule 12.12.2013
comment
Спасибо за ваши ответы! Дело в том, что у меня есть кнопка закрытия в отдельном окне, потому что я хочу, чтобы кнопка закрытия изображения находилась немного за пределами угла всплывающего окна. Единственный способ симки выставить близкую картинку в отдельное окно, иначе картинка уходит под угол окна, когда использую минус в px. Единственное, что происходит сейчас, когда я нажимаю закрыть, - это закрытие изображения, другими словами, другое окно, в котором находится закрытое изображение. - person AppfiXarna; 14.12.2013
comment
затем вы должны открыть окно с высотой и шириной экрана, затем вы можете использовать представление для отображения всплывающего содержимого, чтобы вы могли добавить кнопку закрытия в окно вне всплывающего представления - person Mitul Bhalia; 17.12.2013
comment
Да, тогда я могу сделать это окно полностью прозрачным, и, как вы сказали, вместо этого я использую представление в нем. А как насчет анимации в процессе открытия/показа? Могу ли я поместить анимацию в качестве аргумента в функцию отображения представления? Потому что я хочу открыть окно / вид из ничего, чтобы масштабировать 1,2 и вернуться к его размеру?! - person AppfiXarna; 18.12.2013
comment
Мое решение, когда нужно, чтобы анимация открытия по-прежнему была в прозрачном окне и включала вид (немного меньше) с фоном и близкими изображениями за пределами угла просмотра. Спасибо большое за вашу помощь! - person AppfiXarna; 18.12.2013