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

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

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

Регистрация: Jan 2010
Сообщений: 144
По умолчанию Стилистика кода влияет на результат выполнения?

Был у меня вот такой код для создания SharedObject в случае, когда переменная oVKParams.is_app_user равнялась нулю.

Код AS3:
var oVKParams:Object = 
{
    user_id:String,
    viewer_id:String,
    is_app_user:Boolean
}	
 
oVKParams.user_id = flashVars['user_id'];
oVKParams.viewer_id = flashVars['viewer_id'];
oVKParams.is_app_user = flashVars['is_app_user'];
 
if (!oVKParams.is_app_user)// && parseInt(oVKParams.user_id) && oVKParams.viewer_type == 1)
{
    var so:SharedObject = SharedObject.getLocal("referrer");
    so.data.user_id = oVKParams.user_id;
    so.data.viewer_id = oVKParams.viewer_id;	
    so.close();
}
И этот код не работал - SharedObject не создавался.
Эксперимента ради я решил вместо
Код:
if (!oVKParams.is_app_user)
написать
Код:
if (oVKParams.is_app_user == false)
И всё стало работать.

Это какая-то мистика или я чего-то не знаю об основах программирования на AS3?


Последний раз редактировалось Neborya; 26.03.2010 в 23:57.
Старый 27.03.2010, 00:04
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
trace(!"0");//false
Видимо флеш не догадался, что строку нужно сначала сконвертить в число, а потом в булево - и сразу сконвертил в булев

А зачем вы с false сравниваете? - там во флешварс либо 1 либо 0 передается
Если бы так сравнивали - флеш бы сконвертил что в число - что в строку - все было бы верно:
Код AS3:
if (is_app_user != "1")
if (is_app_user == "0")
if (is_app_user != 1)
if (is_app_user == 0)
P.S. Ваш подход действительно работает, хотя совершенно не очевидно, почему:
Код AS3:
trace("1" == false);//false
trace("0" == false);//true
trace(1 == false);//false
trace(0 == false);//true


Последний раз редактировалось expl; 27.03.2010 в 00:10.
Старый 27.03.2010, 00:12
Neborya вне форума Посмотреть профиль Отправить личное сообщение для Neborya Найти все сообщения от Neborya
  № 3  
Ответить с цитированием
Neborya
 
Аватар для Neborya

Регистрация: Jan 2010
Сообщений: 144
Ясно, почему не сработало, но не ясно, почему работает
Если стринговый "0" - это false, то !oVKParams.is_app_user должен был вернуть false. Но там, видимо, компилятор решил посчитать символы в строке, а 1 символ - это уже не false.
Крыша едет, конечно. После C AS3 кажется языком инопланетян

Цитата:
А зачем вы с false сравниваете - там во флешварс либо 1 либо 0 передается?
Да, 1 либо 0.


Последний раз редактировалось Neborya; 27.03.2010 в 00:34.
Старый 27.03.2010, 01:50
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 4  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
не пойму я эту запись
Код AS3:
is_app_user:Boolean
это просто пара ключ : значение, с всегда заполненным значением
естественно что условие
Код AS3:
if (!oVKParams.is_app_user)
всегда выдавало ложь
так как без булевого типа оно проверяет на NULL объект или нет

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

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

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


 


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


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