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

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.04.2013, 20:39
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 1  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
По умолчанию Проблемы при выводе приложения на разные мониторы.

Написал промежуточный вариант приложения где ядро - swf-файл, а оболочка WinForms C#.
Начал тестировать по принципу: выбрать сторонний комп с Windows 7 вставить флешку с приложением, запустить и что-б работало.
SWF-файл был написан в FlashDevelop 4 изначальные размеры указывались 800*600пкс, масштабирование "noScale".
Оболочка: VisualStudio 2010 C# Express WinForms. Изначальные размеры компонента AxShockwaveFlash в форме - 920*492 пкс. Все возможные параметры Anchor в свойствах были заданы : Top, Bottom, Left, Right.
Приложение писалось на компе с широкоформатным монитором (1680*1050пкс). При тестировании использовалось 4 стронних компа с мониторами 2 (1280*1024) и 2 (1680*1050), причём один из широкоформатных мониторов был вертикально установлен.
На всех широкоформатных мониторах приложение работало так как было задумано.
Проблемы возникли при отображение приложения на мониторах с разрешением 1280*1024 на двух аналогично.
Более наглядно косяки можно увидеть на представленном скриншоте. Там выделено 3 ошибки:
1. Рабочая область - swf-файл вместо того чтобы занимать всё пространство компонента AxShockwaveFlash, занимал выделенное красным.
2. Увеличились кнопки и фоновое изображение в них сползло в верхний левый угол.
3. В верхней части меню уменьшилось и открылся фон.
Если у кого-то есть какие-либо соображения по данному поводу, в чём причина косяков - поделитесь плиз.Нажмите на изображение для увеличения
Название: screen1.png
Просмотров: 466
Размер:	47.3 Кб
ID:	29375

Старый 10.04.2013, 17:21
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
1.См. в сторону автоматически генерируемого метода формы InitializeComponent() и в частности на выставление режимов AutoScaleDimensions и AutoScaleMode формы.
http://msdn.microsoft.com/ru-ru/library/ms229605.aspx
http://msdn.microsoft.com/ru-ru/libr...(v=vs.90).aspx
2. Не надо злоупотреблять анкорами (имхо). Можно использовать контейнеры типа Panel, TableLayoutPanel Dock-режимы, но это имхо, повторюсь.
3. Рабочая область ролика визуально соответствует заявленным "800*600пкс, масштабирование "noScale".
Естественно, масштабированием контента ролика дожен заниматься плеер, а не WinFоrms. Тут не понятно, что не устраивает.

Вообще, странно, все как бы на автомате должно работать, как надо. Попорбуйте потестить на голом приложении с минимальным количеством контролов на форме и дефолтными настройкам их свойств, добавляя поочередно контролы. Возможно где-то что-то лишнего понаставили....

И да, NET-приложения можно отчасти сконфигурировать, используя *.exe.config-файл. Например, сориентировать NET-рантайм на использование определенной версии фреймворка, когда их не одна на целевой машине.
На тестовых компах с версией NET все в порядке?


Последний раз редактировалось alexcon314; 10.04.2013 в 17:36.
Старый 10.04.2013, 17:38
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 3  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Я проверял на скриншоте размеры выводимого изображения SWF-файла, каждая из сторон более первоначально заданной.
Повторюсь - на широкоформатных мониторах флешка занимала всю площадь экрана отведённую под компонент AxShock а не часть её как явствует из скрина.
Спасибо за ответ, буду рыть дальше.
Кстати, компонент AxShock вставлен на одну из страниц TableLayoutPanel, которая вставлена в Panel, которая вставлена в ячейку TabControl.
Прям как у Маршака!

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Каким образом ролик 800*600 занимает всю площадь плеера при размере 920*492 и режиме noScale???
Хотя...
В свойствах компонента AxShockwaveFlash на форме есть поля
CtlScale и SAlign. Они отвечают за выравнивание и скалирование контента.
При этом одновременно в коде ролика можно указать параметры stage.align и stage.scaleMode, например:
Код AS1/AS2:
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
что соответствует CtlScale=NoScale (или ScaleMode=0) и SAlign=LT (или AlignMode=5),
Глюки можно словить, если в свойствах контрола и в коде пытаться указывать разное поведение. Кроме того, нужно смотреть и на процесс инициализации как формы с контролом, так и ролика. Т.е. что и в какой последовательности выполняется. Анкоры, наложенные на контрол, могут добавить путаницы.

Выкладывайте пример проекта (C# и AS 3), где у вас происходят "непонятные" вещи. Не видя конкретного кода, трудно что-либо сказать..разве что пару общих фраз типа "чего-то вы там перемудрили" и "попробуйте все сначала" .
И да, кнопочки со съехавшими картинками - это флеш или родный кнопки WinForms? Какое у них выравнивание и анкоры? Меню тоже выглядит странно, больше похоже на тулбар..
Вобщем, у меня сложилось впечатление, что вы пытаетесь как-то "своеобразно" проинициализировать приложение, оттого и глюки.

Старый 11.04.2013, 17:02
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 5  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Вот скрин экрана моего монитора и открытого приложения. Разрешение монитора 1680*1050.
Ясно видно что работает всё пространство рабочего поля компонента AxShockW.
Ядро - swf-файл выполненный в FD4, в нём ни одной кнопки прогораммно не создаётся, только рисование, логика и контакт с формой C#.
В том-то и дело что я не могу выложить примеры кода, потому как не знаю где происходят непонятные вещи.
На моём мониторе и других широкоформатных мониторах всё работет так как надо.
Проблемы с "квадратными" (в смысле 4*3) мониторами.
Я несколько переделал навигацию приложения но все внутренности те-же.
Нажмите на изображение для увеличения
Название: screen2.png
Просмотров: 342
Размер:	47.7 Кб
ID:	29386

Старый 11.04.2013, 17:05
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 6  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
У кнопок на малой форме все так как было изначально, толко уменьшена ширина, добавлены фоны (стрелки). Все кнопки VS WinForms.

Старый 11.04.2013, 17:24
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 7  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Сделайте вместо фона на кнопках (BackgroundImage) просто Image, и будет вам счастье...
Вы бы хоть значения свойств контрола перечислили, о которых я говорил... в коде ролика скалирование и выравнивание есть? Как загружаете ролик в контрол? Какие параметры привязок используете?
Без кода нифига не понятно, по-любому.
Цитата:
не знаю где происходят непонятные вещи
Я же вам сказал, как надо действовать в такой ситуации: убрать все лишнее, вплоть до "вообще все", добиться нормального поведения и добавлять постепенно остальное....

Старый 11.04.2013, 18:45
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 8  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Да я всё переделал с нуля, оттого и навигация новая. Правда опять таки на своём мониторе.
В принципе можно попробовать на "квадратном" переделать. Поговорю с народом дадут напрокат мониторчик.
Вот код класса в котором описывается работа компонента AxShockWeaveFlash:
Код AS3:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AxShockwaveFlashObjects;
using ShockwaveFlashObjects;
using System.Windows.Forms;
using System.Xml;
 
 
namespace curve1
{
    class ComponentSWF
    {
        private Sklad sklad;
 
        public ComponentSWF(Sklad arg1)
        {
            sklad = arg1;
            String swfPath = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "curve3.swf";
            sklad.form1.swf.LoadMovie(0, swfPath);
            sklad.form1.swf.FlashCall += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(this.poluchDannAS3);
        }
        /// <summary> Получение запроса из SWF-файла компонента AxShockwaveFlash.
        /// Получение запроса из SWF-файла компонента AxShockwaveFlash.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void poluchDannAS3(object sender, _IShockwaveFlashEvents_FlashCallEvent e)
        {
            XmlDocument document = new XmlDocument();
            document.LoadXml(e.request);
            XmlAttributeCollection attributes = document.FirstChild.Attributes;
            String command = attributes.Item(0).InnerText;
            XmlNodeList list = document.GetElementsByTagName("arguments");
            /* Передача полученных данных для обработки и вывода результата */
            string str = list[0].InnerText;
            switch (command)
            {
                /* Переадресация в класс SozdanieSloev */
                case "otvet_SozdNewSloy": sklad.szdSloy.otvetSozdNewSloy(str); break;
                case "vosstanvlNameSloy": sklad.szdSloy.vosstNameSloy(); break;          /* Восст.в Cbx0.Text имени прежнего слоя */
                /* Переадресация в класс OtvetAS3 */
                case "vyvod_okno_soobsh": sklad.otvtAS3.vyvodOtvetOkno(str); break;
                case "vyvod_otvetST_AS3": sklad.otvtAS3.vyvodOtvetStat(str); break;
                case "vyvod_otvetVL_AS3": sklad.otvtAS3.vyvodOtvetVLab(str); break;
                case "vyvod_proverkDann": sklad.otvtAS3.vyvodZnachMBx(str); break;
                /* Переадресация в класс OshybkaAS3 */
                case "vyvod_oshybka_AS3": sklad.oshbAS3.vyvodOshybki(str); break;        /* Вывод ошибки */
                /* Переадресация в класс ComponentPicBox */
                case "image_peredDannyh": sklad.cPicBox.vyvodRisunok(str); break;
            }
        }
        /// <summary> Вызов функции в объекте SWF отформатированной XML-строкой.
        /// Вызов функции в объекте SWF отформатированной XML-строкой.
        /// </summary>
        /// <param name="arg1">XML-отформатированная строка</param>
        public void otprZaprosSWF(string arg1)
        {
            sklad.form1.swf.CallFunction(arg1);
        }
 
        /* Передача в SWF-файл значений реальной ширины и высоты SWF-файла */
        public void otpravkaWdtHghtSWF()
        {
            /*  1.Ширина и 2.Высота SWF-файла */
            string strP = sklad.form1.swf.Width.ToString() +
                          "*!*" + sklad.form1.swf.Height.ToString();
            List<string> list = new List<string>();
            list.Add("documentWdHg");
            list.Add(strP);
            StrokaXMLzaprosAS3 strXML = new StrokaXMLzaprosAS3(sklad);
            string str = strXML.strokaZaprXML_AS3(list);
            sklad.cSWF.otprZaprosSWF(str);
        }
    }
}

Старый 11.04.2013, 19:43
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 9  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Дружище, это ни о чем. Полный код проектов религия не позволяет показать? И ас3 и c#. Проекты FD и VisualStudio (желательно не старше MSVS 2010).

Старый 11.04.2013, 20:34
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 10  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Я сторонник открытости кодов, тому есть примеры и на моём сайте kersha.ru и на этом форуме. Однако это касается только тех проектов которые претендуют на статус законченных. Незаконченные проекты не выкладываются.
Да в принципе я докопаюсь.

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

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

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


 


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


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