2018-02-07 Ztree函数、问题、AugularJS-功能介绍1、Pygame编写游戏、设计模式

第一组:姚成栋 Ztree基础

  1. 如果ztree要调用函数,如调用某个方法,需要在setting进行配置,如

function zTreeOnClick(event, treeId, treeNode) {
   };
var setting = {
    callback: {
        onClick: zTreeOnClick
    }
};
  1. 比如,在页面上点击树节点后显示其名称相同的数据,


    image.png

    代码如下:

  //获取树形结构
        var zTreeObj;
        // zTree 的参数配置,深入使用请参考 API 文档(setting 配置详解)
        var setting = {
            callback: {
                onClick: zTreeOnClick
            }
        };
        // zTree 的数据属性,深入使用请参考 API 文档(zTreeNode 节点数据详解)
        var zNodes = [
        //数据
        ];
        $(document).ready(function () {
            zTreeObj = $.fn.zTree.init($("#Typetree"), setting, zNodes);
        });
    }
  1. 当然别忘记一开始要加载树
 //获取树形结构
        var zTreeObj;
$(document).ready(function () {
            zTreeObj = $.fn.zTree.init($("#Typetree"), setting, zNodes);
        });


第二组:赵彩凤

问题:
AngularJS 日期控件-年度选择 怎么给默认值?

image.png

目前给日期控件 placeholder="{{year}}",js获取当前年..仅显示
后台处理:若传过来日期为空,则按当前年查询
问如何给年度时间控件默认值?


第三组:蔡永坚 AugularJS-功能介绍1

数据绑定

AngularJS的双向数据绑定,意味着你可以在Mode(JS)中改变数据,而这些变动立刻就会自动出现在View上,反之亦然。即:一方面可以做到model变化驱动了DOM中元素变化,另一方面也可以做到DOM元素的变化也会影响到Model。
从View到Controller再到View的数据交互(例01):

<html ng-app="demoApp">

……

<input type="text" ng-model="user.name" placeholder="请输入名称"/>

Hello, {{ user.name }}!

关键: ng-app 、 ng-model 和 { {user.name } }

首先: <html>元素的ng-app属性。标识这个DOM里面的内容将启用AngularJS应用。

其次:告诉AngularJS,对页面上的“user.name” 这个Model进行双向数据绑定。

第三:告诉AngularJS,在“{{ user.name}}”这个指令模版上显示“user.name”这个Model的数据。

scopes、module、controller
scopes

$scope是一个把view(一个DOM元素)连结到controller上的对象。在我们的MVC结构里,这个 $scope 将成为model,它提供一个绑定到DOM元素(以及其子元素)上的excecution context。

尽管听起来有点复杂,但 $scope 实际上就是一个JavaScript对象,controller和view都可以访问它,所以我们可以利用它在两者间传递信息。在这个 $scope 对象里,我们既存储数据,又存储将要运行在view上的函数。

每一个Angular应用都会有一个 $rootScope。这个 $rootScope 是最顶级的scope,它对应着含有 ng-app 指令属性的那个DOM元素。

app.run(function($rootScope) { $rootScope.name = "张三"; });

如果页面上没有明确设定 $scope ,Angular 就会把数据和函数都绑定到这里, 第一部分中的例子就是靠这一点成功运行的。

这样,我们就可以在view的任何地方访问这个name属性,使用模版表达式{{}},像这样:{{ name }}

module

首先需要明确一下模板的概念。在我还不知道有模板这个东西的时候,曾经用js拼接出很长的HTML字符串,然后append到页面中,这种方式想想真是又土又笨。后来又看到可以把HTML代码包裹在一个<script>标签中当作模板,然后按需要取来使用。

在ng中,模板十分简单,它就是我们页面上的HTML代码,不需要附加任何额外的东西。在模板中可以使用各种指令来增强它的功能,这些指令可以让你把模板和数据巧妙的绑定起来。

在<html>标签上多了一个属性ng-app=”MyApp”,它的作用就是用来指定ng的作用域是在<html>标签以内部分。在js中,我们调用angular对象的module方法来声明一个模块,模块的名字和ng-app的值对应。这样声明一下就可以让ng运行起来了。

ng-controller

要明确创建一个$scope 对象,我们就要给DOM元素安上一个controller对象,使用的是ng-controller 指令属性:

<div ng-controller="MyController"> {{ person.name }} </div>  

ng-controller指令给所在的DOM元素创建了一个新的$scope 对象,并将这个$scope 对象包含进外层DOM元素的$scope 对象里。在上面的例子里,这个外层DOM元素的$scope 对象,就是$rootScope 对象。这个scope链是这样的:

所有scope都遵循原型继承(prototypal inheritance),这意味着它们都能访问父scope们。对任何属性和方法,如果AngularJS在当前scope上找不到,就会到父 scope上去找,如果在父scope上也没找到,就会继续向上回溯,一直到$rootScope 上。即如果controller是多层嵌套的,就会从最里面一直往外找,这个scope链是这样的:
唯一的例外:有些指令属性可以选择性地创建一个独立的scope,让这个scope不继承它的父scope们,这个会在指令详解中说明。


第四组:张元一 Pygame编写游戏《外星人入侵》

一. 创建pygame窗口,游戏基本结构如下:

alien_invasion.py

import sys
import pygame
def run_game():
    pygame.init()
    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("AlienInvasion")

    #主循环
    while True: #让最近绘制的屏幕可见
        pygame.display.flip()
run_game()

将创建一个空的Pygame窗口

二. 创建设置类

settings.py

import random

class Settings():
    def __init__(self):
        self.screen_width = 1000
        self.screen_height = 600
        self.bg_color = (255,255,255)


        self.bullet_width = 3
        self.bullet_height = 15
        self.bullet_color = random.randint(0,256),random.randint(0,256),random.randint(0,256)
        self.bullets_allowed = 1000

        self.speedup_scale = 2
        self.score_scale = 2
        self.initialize_dynamic_settings()

        self.ship_limit = 3


    def initialize_dynamic_settings(self):
        self.ship_speed_factor = 20
        self.bullet_speed_factor = 4
        self.alien_speed_factor = 10
        self.fleet_drop_speed = 5

        #1表示向右,-1表示向左
        self.fleet_direction = 1
        #
        self.alien_points1 = 10

    def increase_speed(self):
        self.bullet_speed_factor *= self.speedup_scale
        self.alien_speed_factor *= self.speedup_scale
        self.fleet_drop_speed *= self.speedup_scale
        self.alien_points1 *= self.score_scale

在修改游戏时,只需要修改此文件的一些值,无需查找散布在文件中的不同配置。


第五组:陈孚楠 设计模式

3、 抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。

为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

这里不再举例,主要在于抽象工厂与工厂模式的区别:
简单的说,抽象工厂是对简单工厂(工厂方法模式、工厂模式)中的工厂类进一步抽象成接口,解决了工厂方法中的硬编码问题,因为以后如有新增新的对象,只要再实现一个对应的工厂类,就完成了扩展。无需修改以前的代码。普通工厂产出是一个产品(实例),抽象工厂产出是一个抽象(接口)。区别在于,若添加一个新的产品,前者是修改工厂,后者是创建新工厂(符合“闭合原则”)。

抽象工厂的优点/缺点:

优点:

抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。
当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。
增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。

缺点:

增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。(不过说这个缺点好像有点吹毛求疵了)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容